我用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上有一个延迟(看起来你不能快速切换手电筒)。可能是什么问题呢?
答案 0 :(得分:1)
您可以通过使用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);