如何在Android中更改已弃用的Camera类

时间:2015-06-25 16:29:15

标签: android android-camera

在以前的方式中,可以使用Camera类来使用手电筒功能。但是现在不推荐使用android.hardware包中的整个Camera和Camera相关的类,我应该在android.hardware.camera2包中使用其他一些类。

传统上,我像这样编码手电筒部分。

// getting camera parameters
private void getCamera() {
    if (camera == null) {
        try {
            camera = Camera.open();
            params = camera.getParameters();
        } catch (RuntimeException e) {
            Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());
        }
    }
}

 /*
  * Turning On flash
  */
private void turnOnFlash() {
    if (!isFlashOn) {
        if (camera == null || params == null) {
            return;
        }
        // play sound
        playSound();

        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(params);
        camera.startPreview();
        isFlashOn = true;

        // changing button/switch image
        toggleButtonImage();
     } 

}    

但是现在使用新的API我很困惑如何使用新的API。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

for flashlight I advise using the Camera2 API only from Android 6 (api 23), my function for toggling the flashlight looks like

    @TargetApi(Build.VERSION_CODES.M)
public void toggleMarshmallowFlashlight(boolean enable) {
    try {
        final CameraManager manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
        final String[] list = manager.getCameraIdList();
        manager.setTorchMode(list[0], enable);
    } catch (CameraAccessException e) {

    }
}