Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使照相机闪光_Android_Camera Flash - Fatal编程技术网

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方法内部,会怎么样?