我想在我的自定义相机中实现tap to focus功能.这是Google提供的基本代码https://github.com/googlesamples/android-Camera2Basic
这里是我认为我应该添加我的功能的代码片段如果有人已经实现了Camera2 API,请帮忙!
private void lockFocus() {
try {
// This is how to tell the camera to lock focus.
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,
CameraMetadata.CONTROL_AF_TRIGGER_START);
// Tell #mCaptureCallback to wait for the lock.
mState = STATE_WAITING_LOCK;
mCaptureSession.capture(mPreviewRequestBuilder.build(), mCaptureCallback,
mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 所以,我设法用我想要的方式用旧相机创建我想要的功能.
用mCamera.autoFocus(autoFocusCallback); 我检测到何时有焦点并在预览模式下运行所需的代码.
现在我很难掌握如何在camera2 API中做同样的事情.我的第一个想法是我会使用
private void process(CaptureResult result) {
switch (mState) {
case STATE_PREVIEW: {
// We have nothing to do when the camera preview is working normally.
int afState = result.get(CaptureResult.CONTROL_AF_STATE);
//if (CaptureResult.CONTROL_AF_STATE == afState) {
Log.d("SOME KIND OF FOCUS", "WE HAVE");
//}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但我没有找到某种状态告诉我,我们已经得到了关注.有人知道如何使用Camera2 API完成此操作吗?
在我的相机应用程序中,我有一个按钮可以将相机面向前方或后方更改,我可以使用后置相机捕捉和保存图像,但是当我切换到前置相机时,我无法捕捉图像.这就是我将相机切换到前面或后面的方式.
ImageView switch_camera =(ImageView) rootview.findViewById(R.id.imageView7);
switch_camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// facing = characteristics.get(CameraCharacteristics.LENS_FACING);
if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) {
//isfrontcam=true;
try {
//manager.openCamera(getBackFacingCameraId(manager), mStateCallback, mBackgroundHandler);
closeCamera();
openCamera(mTextureView.getWidth(), mTextureView.getHeight(),"0");
Log.e("opening ","BackCam");
facing = 1;
} catch (SecurityException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} else if (facing != null && facing == CameraCharacteristics.LENS_FACING_BACK) {
// isfrontcam = true;
try {
//manager.openCamera(getFrontFacingCameraId(manager), mStateCallback, mBackgroundHandler);
// characteristics = manager.getCameraCharacteristics("1");
closeCamera();
openCamera(mTextureView.getWidth(), …Run Code Online (Sandbox Code Playgroud)