Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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 为什么照相机闪光灯没有打开,CameraAccessException类的下划线为红色?_Android_Android Camera_Android Camera2 - Fatal编程技术网

Android 为什么照相机闪光灯没有打开,CameraAccessException类的下划线为红色?

Android 为什么照相机闪光灯没有打开,CameraAccessException类的下划线为红色?,android,android-camera,android-camera2,Android,Android Camera,Android Camera2,我正在尝试制作一个火炬灯应用程序,但我无法正确地打开它。我使用了以下逻辑来打开它。请告诉我哪里出了问题。当我在安卓手机上运行时,它运行正常,但手电筒无法启动 if (count[0] == 0) { count[0] = 1; ((TransitionDrawable) imageView.getDrawable()).startTransition(3000); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)

我正在尝试制作一个火炬灯应用程序,但我无法正确地打开它。我使用了以下逻辑来打开它。请告诉我哪里出了问题。当我在安卓手机上运行时,它运行正常,但手电筒无法启动

if (count[0] == 0) {
    count[0] = 1;
    ((TransitionDrawable) imageView.getDrawable()).startTransition(3000);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        String cameraId = null; // Usually back camera is at 0 position.
        try {
            cameraId = camManager.getCameraIdList()[0];
            camManager.setTorchMode(cameraId, true);   //Turn ON
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }
} else {
    count[0] = 0;
    ((TransitionDrawable) imageView.getDrawable()).reverseTransition(3000);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        CameraManager camManager1 = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        String cameraId = null; // Usually back camera is at 0 position.
        try {
            cameraId = camManager1.getCameraIdList()[0];
            camManager1.setTorchMode(cameraId, false);   //Turn ON
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }
}

您所编写的代码在Android Marshmallow+上完全可用

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
此行检查您运行应用程序的Android版本。它仅在Android版本6+(API级别23+)上执行
if
块中的代码


您需要添加
else
部分,使用一种更老的方法打开手电筒,如下方法:

只是为了确定,您运行它的Android版本是什么?在KitKat手机上运行它。您是否知道
如果(Build.version.SDK\u INT>=Build.version\u CODES.M)会发生什么{
是吗?我现在知道应该是16岁了……但是有些女同学失败了,感谢它的帮助!!:)