我的问题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
一切工作正常。
它跳进去。 Switch LED ON
... 然后OFF
... 当我结束调用它时返回到IDLE
. 就一次……但只要电话处于RING
状态,我希望他这样做。
有什么想法可以解决这个问题..??