Android 使照相机闪光
我想让照相机的灯光闪烁。我的代码将使它闪烁一个按钮按下,但如果我再次点击按钮之前,它已经完成闪烁将崩溃我的应用程序。我相信在我再次尝试启动闪光灯之前,我需要检查一下它是否还在闪烁Android 使照相机闪光,android,camera-flash,Android,Camera Flash,我想让照相机的灯光闪烁。我的代码将使它闪烁一个按钮按下,但如果我再次点击按钮之前,它已经完成闪烁将崩溃我的应用程序。我相信在我再次尝试启动闪光灯之前,我需要检查一下它是否还在闪烁 public class BlinkBack { public static void blink(MainActivity ma){ if (ma.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)){
public class BlinkBack {
public static void blink(MainActivity ma){
if (ma.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)){
final Camera mCamera = Camera.open();
new CountDownTimer(5000, 100) {
int counter = 0;
public void onTick(long millisUntilFinished) {
if (counter % 2 == 0) {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
mCamera.startPreview();
}
else {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
}
counter++;
}
public void onFinish() {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
mCamera.release();
}
}.start();
}
}
}我找到了自己的答案。最终摄像机mCamera=Camera.open;有一个未检查的RunTimeException,所以我用一个try-catch处理了这个异常,它修复了它
public class BlinkBack {
public static void blink(MainActivity ma){
if (ma.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)){
try {
final Camera mCamera = Camera.open();
new CountDownTimer(5000, 100) {
int counter = 0;
public void onTick(long millisUntilFinished) {
if (counter % 2 == 0) {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
mCamera.startPreview();
}
else {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
}
counter++;
}
public void onFinish() {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
mCamera.release();
}
}.start();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}ma.getPackageManager.hasSystemFeaturePackageManager.FEATURE\u CAMERA\u如果闪光灯可用,则闪光灯返回true,因此如果闪光灯不可用,则不应执行代码。这次撞车可能是巧合。如果将if ma.getPackageManager.hasSystemFeaturePackageManager.FEATURE\u CAMERA\u FLASH{//do blink}放在方法调用之外,而不是放在blink方法内部,会怎么样?