问题描述
我有一个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一次。
我分支形式,并将其更改为使用 CaptureRequest.CONTROL_AF_MODE_AUTO
而不是 CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE
从git并查看它的工作原理 -
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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!