Android:如何延迟摄像机拍摄的特定帧的捕获?

时间:2016-05-08 09:59:35

标签: android camera

我正在开发一种使用Android手机摄像头作为接收器的光(LED)通信系统,对相机帧进行阈值处理。为此,我使用了预览的回调方法onPreviewFrame。 为了更加准确,需要每隔几帧延迟帧的捕获,以便系统重新同步。

我的问题是:

  1. 如何延迟单帧的捕获(而不是预览)?
  2. 我可能不知道相机fps速率的内部变化,如果有,我该如何限制或更改它们?
  3. *要限制相机fps的费率,我使用setPreviewFpsRangesetAutoWhiteBalanceLocksetAutoExposureLock

1 个答案:

答案 0 :(得分:0)

您可以尝试在API级别21中添加的较新的android.hardware.camera2软件包,它将替换已弃用的Camera类,并提供对Camera功能的精细控制:

获取CameraManager服务

CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);

检索设备上可用的相机列表

String[] cameraIdList = manager.getCameraIdList();

通过cameraList迭代选择具有所需特征的相机

for(String cameraId:cameraIdList)
{
    CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
}

使用预览创建相机回调课程并仍然捕捉请求

private class CameraCallback extends CameraDevice.StateCallback
{
    @Override
    public void onOpened(CameraDevice camera)
    {
        CaptureRequest previewRequest = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW).build();

        CaptureRequest stillCaptureRequest = camera.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE).build();
    }
}