相机预览会话setRepeatingRequest焦点问题,只聚焦第一次ontouch [英] Camera Preview Session setRepeatingRequest focus issue, focuses only first time ontouch

查看:4454
本文介绍了相机预览会话setRepeatingRequest焦点问题,只聚焦第一次ontouch的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个textureview,我已经实现了onuch监听器,我想当我触摸显示器,以便能够聚焦,但有一个问题,当设置setRepeatingRequest建立显示,它只有第一次时,我触摸,之后我可以触摸100x,但仍然没有效果,我想启用闪光对焦和捕获,但闪光灯保持所有的时间,因为相机不聚焦,请帮助我,我被卡住了5天在这个任务!



这是我的代码:
// meteringRectangleArr是我可以集中(计量)的区域

  mPreviewCaptureRequestBuilder.set(
CaptureRequest.CONTROL_AF_TRIGGER,
CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);

mPreviewCaptureRequestBuilder.set(
CaptureRequest.CONTROL_AF_REGIONS,
meteringRectangleArr);

mPreviewCaptureRequestBuilder.set(
CaptureRequest.CONTROL_AE_REGIONS,
meteringRectangleArr);

mPreviewCaptureRequestBuilder.set(CaptureRequest.CONTROL_MODE,
CaptureRequest.CONTROL_MODE_AUTO);

mPreviewCaptureRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_AUTO);

mPreviewCaptureRequestBuilder.set(
CaptureRequest.CONTROL_AF_TRIGGER,
CaptureRequest.CONTROL_AF_TRIGGER_START);

if(flash_value == 1){
flash_startime = System.currentTimeMillis();
updateFlashingView();
mPreviewCaptureRequestBuilder.set(
CaptureRequest.FLASH_MODE,
CaptureRequest.FLASH_MODE_SINGLE);
}

else if(flash_value == 0){
mPreviewCaptureRequestBuilder.set(
CaptureRequest.FLASH_MODE,
CaptureRequest.FLASH_MODE_OFF);
}

try {

mCameraCaptureSession.setRepeatingRequest(
mPreviewCaptureRequestBuilder.build(),
null,mBackgroundHandler);

} catch(CameraAccessException e){
// TODO自动生成的catch块
e.printStackTrace();
}


解决方案

>

  mPreviewCaptureRequestBuilder.set(
CaptureRequest.CONTROL_AF_TRIGGER,
CaptureRequest.CONTROL_AF_TRIGGER_START);

您只能使用mCameraCaptureSession.capture调用CONTROL_AF_TRIGGER_START一次。



我分支形式 google的Camera2Basic示例,并将其更改为使用 CaptureRequest.CONTROL_AF_MODE_AUTO 而不是 CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE



从git并查看它的工作原理 - https://github.com/pinhassi/android-Camera2Basic


i have a textureview where i have implemented ontouch listener, i want when i touch the display to be able to focus, but there's a problem when setting setRepeatingRequest to build the display, it focuses only first time when i touch and after that i can touch 100x but still it has no effect, i want to enable flash on focusing and on capture but the flash stays on all the time as the camera does not focus, please help me, i'm stuck for 5 days at this task !

Here is my code : //meteringRectangleArr is the areas where i can focus (metering)

    mPreviewCaptureRequestBuilder.set(
                    CaptureRequest.CONTROL_AF_TRIGGER,
                    CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);

                mPreviewCaptureRequestBuilder.set(
                        CaptureRequest.CONTROL_AF_REGIONS,
                        meteringRectangleArr);

                mPreviewCaptureRequestBuilder.set(
                    CaptureRequest.CONTROL_AE_REGIONS,
                        meteringRectangleArr);

                mPreviewCaptureRequestBuilder.set(CaptureRequest.CONTROL_MODE,
                        CaptureRequest.CONTROL_MODE_AUTO);

                mPreviewCaptureRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
                        CaptureRequest.CONTROL_AF_MODE_AUTO);

                mPreviewCaptureRequestBuilder.set(
                        CaptureRequest.CONTROL_AF_TRIGGER,
                        CaptureRequest.CONTROL_AF_TRIGGER_START);

                if(flash_value == 1){
                    flash_startime = System.currentTimeMillis();
                    updateFlashingView();
                    mPreviewCaptureRequestBuilder.set(
                            CaptureRequest.FLASH_MODE,
                            CaptureRequest.FLASH_MODE_SINGLE);
                }

                else if (flash_value == 0){
                    mPreviewCaptureRequestBuilder.set(
                            CaptureRequest.FLASH_MODE,
                            CaptureRequest.FLASH_MODE_OFF);
                }

                try {

                    mCameraCaptureSession.setRepeatingRequest(
                        mPreviewCaptureRequestBuilder.build(),
                        null, mBackgroundHandler);

                } catch (CameraAccessException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

解决方案

remove this:

mPreviewCaptureRequestBuilder.set(
                        CaptureRequest.CONTROL_AF_TRIGGER,
                        CaptureRequest.CONTROL_AF_TRIGGER_START);

you should call CONTROL_AF_TRIGGER_START only once, using mCameraCaptureSession.capture.

I branched form google's Camera2Basic example and changed it to use CaptureRequest.CONTROL_AF_MODE_AUTO instead of CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE

You can take the project from git and see how it works - https://github.com/pinhassi/android-Camera2Basic

这篇关于相机预览会话setRepeatingRequest焦点问题,只聚焦第一次ontouch的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆