android触屏对焦_Android camera2 api触控焦点的例子?

本文讨论了在使用Android Camera2 API时如何实现触屏对焦功能。作者遇到的问题是,当前的代码导致了无限重复的自动对焦序列和不正确的对焦位置。他们分享了当前的焦点设置代码,并寻求帮助以正确实现触摸区域的对焦并避免不必要的自动闪光。
摘要由CSDN通过智能技术生成

嗨,我正在使用camera2basic示例来实现我的camera2应用程序 . 我找不到任何好的例子来实现触摸来专注于camera2 api . 目前我用于触控的代码是:

private void setFocusArea(MotionEvent event) {

if (mCameraId == null) return;

CameraManager cm = (CameraManager)getActivity().getSystemService(Context.CAMERA_SERVICE);

CameraCharacteristics cc = null;

try {

cc = cm.getCameraCharacteristics(mCameraId);

} catch (CameraAccessException e) {

e.printStackTrace();

}

int myX = (int)event.getX();

int myY = (int)event.getY();

MeteringRectangle focusArea = new MeteringRectangle(myX-100,myY-100,200,200,MeteringRectangle.METERING_WEIGHT_DONT_CARE);

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_CANCEL);

try {

mCaptureSession.capture(mPreviewRequestBuilder.build(), mCaptureCallback,

mBackgroundHandler);

// After this, the camera will go back to the normal state of preview.

mState = STATE_PREVIEW;

} catch (CameraAccessException e){

// log

}

if (isMeteringAreaAESupported(cc)) {

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS,

new MeteringRectangle[]{focusArea});

}

if (isMeteringAreaAFSupported(cc)) {

mPreviewRequestBuilder

.set(CaptureRequest.CONTROL_AF_REGIONS, new MeteringRectangle[]{focusArea});

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,

CaptureRequest.CONTROL_AF_MODE_AUTO);

}

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,

CameraMetadata.CONTROL_AF_TRIGGER_START);

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,

CameraMetadata.CONTROL_AE_PRECAPTURE_TRIGGER_START);

try {

mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), mCaptureCallback,

mBackgroundHandler);

mManualFocusEngaged = true;

} catch (CameraAccessException e) {

// error handling

}

}

但问题在于它显示出奇怪的行为,其上的自动闪光不断重复自动对焦序列无限次,而且它似乎并不专注于触摸区域 . 我试过改变

mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), mCaptureCallback, mBackgroundHandler);

至:

mCaptureSession.capture(mPreviewRequestBuilder.build(), mCaptureCallback, mBackgroundHandler);

这停止了重复的自动对焦序列,但它仍然没有聚焦在触摸区域上,闪光灯只闪烁不到一秒而不是正常的对焦序列 . 请帮我解决这个问题,或者引导我进行工作,以便集中注意力 . 谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值