Android開發打開手電筒

直接看代碼:

if (mCameraRenderer.getFUCamera().getCameraFacing() == CameraFacingEnum.CAMERA_BACK){
                if (mCameraRenderer.getFUCamera().getmFaceUnityCamera().getCamera() != null){
                    Camera.Parameters mParameters = mCameraRenderer.getFUCamera().getmFaceUnityCamera().getCamera().getParameters();
                    if (mParameters.getFlashMode().equals(Camera.Parameters.FLASH_MODE_OFF)){
                        mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                        iv_photo_flash_change.setImageResource(R.mipmap.ic_photo_flash_open);
                    } else {
                        mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                        iv_photo_flash_change.setImageResource(R.mipmap.ic_photo_flash_close);
                    }
                    mCameraRenderer.getFUCamera().getmFaceUnityCamera().getCamera().setParameters(mParameters);

                }
            }

關鍵代碼

  1. 打開手電筒mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
  2. 關閉手電筒mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

我上面的Camera用的是相芯美顏的,不過用不用第三方都一樣的,我看相芯裏面代碼也是用的是手機Camera。

生成Camera代碼如下:

fun openCamera() {
    if (mCamera != null) {
        return
    }
    try {
        val isFront = mCameraFacing == CameraFacingEnum.CAMERA_FRONT
        val cameraId = if (isFront) mFrontCameraId else mBackCameraId
        mCamera = Camera.open(cameraId)
        if (mCamera == null) {
            throw java.lang.RuntimeException("No camera")
        }
        mExposureCompensation = EXPOSURE_COMPENSATION
        CameraUtils.setCameraDisplayOrientation(mContext, cameraId, mCamera!!)
        val parameters: Camera.Parameters = mCamera!!.parameters
        CameraUtils.setFocusModes(parameters)
        CameraUtils.chooseFrameRate(parameters,mIsHighestRate )
        val size: IntArray = CameraUtils.choosePreviewSize(parameters, mCameraWidth, mCameraHeight)
        mCameraWidth = size[0]
        mCameraHeight = size[1]
        parameters.previewFormat = ImageFormat.NV21
        CameraUtils.setParameters(mCamera, parameters)
        // log camera all parameters
        logCameraParameters()
        startPreview()
    } catch (e: Exception) {
        e.printStackTrace()
        FULogger.e(TAG, "openCamera:${e.message}")
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章