2017-10-28 214 views
0

不转我只有与Android轻微的经验,并有下面的代码片段:setTorchMode()最小化的应用程序和Flash的

String cameraId = cameraManager.getCameraIdList()[1]; System.out.println(cameraId); cameraManager.setTorchMode(cameraId, true);

应打开闪光灯背面相机(理想) 。这段代码在onClickListener中执行。当cameraManager.setTorchMode(cameraId, true);得到执行时,应用程序被最小化(我可以看到它仍在运行 - 没有崩溃),但闪光灯未打开。

在尝试添加额外的检查选项后,我几乎筋疲力尽,检查闪光灯是否可用。该项目设置为Android的Jellybean +版本。测试手机是Lollipop 5.0.2。

我知道这个问题可能是一个重复: How to open device flashlight in Android N?

但已经穷尽想尽选项,迫切需要一个解决方案。提前致谢。

回答

0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE); 
     try { 
      for (String camID : mCameraManager.getCameraIdList()) { 
       CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(camID); 
       int lensFacing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING); 
       if (lensFacing == CameraCharacteristics.LENS_FACING_BACK 
         && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) { 
        mCameraId = camID; 
        break; 
       } 
      } 
      if (mCameraId != null) { 
       mCameraManager.setTorchMode(mCameraId, true); 
      } 
     } catch (CameraAccessException e) { 
      e.printStackTrace(); 
     } 
    } 

mCameraId将打开相机闪光灯。如果设备没有闪存硬件,则mCameraId将为空,并且setTorchMode不会在上面的代码中调用。

相关问题