onCallStateChanged()
에 청취자 또는 프로그램 자체에 문제가 있습니다.onCallStateChanged가 상태를 변경하지 않습니다.
모든 것은 한 가지를 제외하고는 정상적으로 작동합니다. while()-Loop
에있을 때 통화 상태를 뛰어 넘을 수 없습니다.
내가하려고하는 것은 전화가 울릴 때 LED가 깜박 거리도록하는 것입니다.
그래서 나는 뛰어 :
if (TelephonyManager.CALL_STATE_RINGING == state){
// Incoming call handling
Log.d(incomingNumber, "Ring");
ring = true;
idle = false;
if (mCamera == null) {
mCamera = Camera.open();
Parameters pLightOn = mCamera.getParameters();
Parameters pLightOff = mCamera.getParameters();
pLightOn.setFlashMode(Parameters.FLASH_MODE_TORCH);
pLightOff.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(pLightOn);
mCamera.startPreview();
try {
Thread.sleep(30);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//##########################################
while(ring && !idle){
try {
mCamera.setParameters(pLightOff);
Thread.sleep(1000);
mCamera.setParameters(pLightOn);
Thread.sleep(30);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
idle = true;
pLightOff.setFlashMode(Parameters.FLASH_MODE_OFF);
e.printStackTrace();
}
catch(RuntimeException ex){
idle = true;
pLightOff.setFlashMode(Parameters.FLASH_MODE_OFF);
String errorMessage = "Error setting camera flash status. Your device may be unsupported.";
}
}
idle = true;
ring = false;
pLightOff.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.stopPreview();
mCamera.release();
//##########################################
}
}
하지만 문제는 내가 그것이 WHILE
을 뛰어하지 않습니다 호출 종료 때. STATE
은 변경되지 않고 그대로 RING
에 있습니다. 그래서 끝이 깜박입니다. IDLE
으로 돌아 오지 않습니다.
내가 while-loop
을 제거하면 모든 것이 잘 작동합니다. 스위치가 LED ON
... then OFF
... 내가 끝내면 IDLE
으로 돌아갑니다. 한 번만 ... 전화가 RING
인 상태에서이 작업을 수행하기를 원합니다.
이 문제를 해결하기위한 모든 아이디어 .. ??