安卓延迟手电筒



我做了一个简单的应用程序,有2个按钮来测试手电筒。

button1.setOnClickListener...etc
    if (cameraObj ==null){ return; }
    Camera.Parameters cameraParams =cameraObj.getParameters();
    if(cameraParams.getFlashMode() == null) { return;}
    cameraParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
    cameraObj.setParameters(cameraParams);
    cameraObj.startPreview(); 
button2.setOnClick etc...
    if(cameraObj==null){ return; }
    Camera.Parameters cameraParams = cameraObj.getParameters();
    cameraParams.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
    cameraObj.setParameters(cameraParams);
    cameraObj.stopPreview(); 

该应用程序在2台设备上进行了测试:HTC ONE和HTC DESIRE 500

该应用程序在两者上都运行良好。问题是:打开/关闭手电筒有延迟。

当我非常快速地按下和关闭时,DESIRE 500 上的手电筒会在我按下按钮时关闭和打开,但在 HTC ONE 上有一个延迟(看起来你不允许切换那么快的手电筒(。可能是什么问题?

您可以通过使用 Hander 添加固定延迟来解决此问题,这将在延迟后触发闪光灯,

// variable to fix the timeout duration in milliseconds
// 1000 milliseconds = 1 second
double TIME_OUT = 2*1000;
       new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                // time has been reached, turn the flash on
               if (cameraObj ==null){ return; }
               Camera.Parameters cameraParams =cameraObj.getParameters();
               if(cameraParams.getFlashMode() == null) { return;}
               cameraParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
               cameraObj.setParameters(cameraParams);
               cameraObj.startPreview(); 
                }
            }
        }, TIME_OUT);

最新更新