onCallStateChanged()
リスナーやプログラム自体ではないことに問題があります。
1つのことを除いて、すべてが正常に機能します。にいるときは、通話状態からジャンプできません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
.
この問題を解決するためのアイデア..??