0

我的问题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状态,我希望他这样做。

有什么想法可以解决这个问题..??

4

1 回答 1

1

It seems the thread problem. Do not program while-loop in android main thread. Just create a thread for while-loop to avoid block main thread block.

于 2013-07-31T05:49:37.060 回答