Android L相机中的手动ISO控制和变焦控制(android.hardware.Camera2)

时间:2015-01-12 07:23:10

标签: android android-camera

这里我遇到了新的Camera API(android.hardware.Camera2)。在我的应用程序中,我想在相机上设置手动ISO控制和缩放控制,但我不知道该怎么做。我知道我需要更改以下内容:

    ISO的
  1. SENSOR_SENSITIVITY
  2. LENS_FOCAL_LENGTH进行缩放。
  3. 但问题是,android开发者网站上只有定义和描述,没有例子说明如何在编码时声明和使用这些方法。

    任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:4)

LENS_FOCAL_LENGTH缩放仅适用于具有光学变焦功能的手机,与野外的Android手机相比,这种手机非常少见。要使用Camera 2 API放大,您应该执行以下操作。

  1. 使用以下代码段确定最大数码变焦。
  2. CameraCharacteristics characteristics = mCameraManager
            .getCameraCharacteristics(cameraId);
    Float maxDigitalZoom = characteristics.get(
            CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM);
    
    1. 为数码变焦创建裁剪Rect,并在预览和拍摄静止图像时使用它。
    2. mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
      mPreviewRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, cropRect);
      

      mCaptureRequestBuilder = mCameraDevice
              .createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
      mCaptureRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, cropRect);
      

      注意您负责确定和实施缩放控件。对于每个缩放级别,请创建相应的cropRect,其尺寸不得小于floor(activeArraySize.width / android.scaler.availableMaxDigitalZoom)floor(activeArraySize.height / android.scaler.availableMaxDigitalZoom)

      您可以使用activeArraySize键检索CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE

答案 1 :(得分:2)

如果你看一下[android开发者网站的例子] [1]

[1]:http://developer.android.com/samples/Camera2Basic/index.html您将看到在构建CaptureRequest时需要设置参数:

 mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
                                            CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);

您应该对要设置的参数执行相同操作,即

mPreviewRequestBuilder.set(CaptureRequest.LENS_FOCAL_LENGTH, desiredValue);