2017-10-28 210 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不會在上面的代碼中調用。

相關問題