【问题标题】:How to alter the deprecated Camera class in Android如何更改 Android 中已弃用的 Camera 类
【发布时间】:2015-06-25 16:29:15
【问题描述】:

在以前的方式中,可以通过使用相机类来使用手电筒功能。但现在 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 感到很困惑。谁能解释一下?

【问题讨论】:

标签: android android-camera


【解决方案1】:

对于手电筒,我建议仅使用 Android 6 (api 23) 中的 Camera2 API,我的手电筒切换功能如下所示

    @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) {

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2015-06-14
    • 2016-11-26
    • 2019-07-12
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多