zooming - Camera2 API 缩放相机预览
问题描述
我正在使用 Camera2 API 来显示相机预览。以下代码工作正常。但我希望相机在预览开始时放大到最大。我必须将哪些代码添加到我的 MainActivity?我已阅读问题Camera zoom setting using Camera2 API。但我无法为我使用它。主要活动代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTextrureView = findViewById(R.id.textureView);
myCameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);
openCamera();
}
private CameraDevice.StateCallback myStateCallBack = new CameraDevice.StateCallback() {
@Override
public void onOpened(@NonNull CameraDevice camera) {
myCameraDevice = camera;
}
@Override
public void onDisconnected(@NonNull CameraDevice camera) {
myCameraDevice.close();
}
@Override
public void onError(@NonNull CameraDevice camera, int error) {
myCameraDevice.close();
myCameraDevice = null;
}
};
private void openCamera() {
try {
myCameraID = myCameraManager.getCameraIdList()[0];
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, PackageManager.PERMISSION_GRANTED);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
return;
}
myCameraManager.openCamera(myCameraID, myStateCallBack, null);
}
catch (Exception e){
e.printStackTrace();
}
}
public void cameraPreview(View view){
SurfaceTexture mySurfaceTexture = myTextrureView.getSurfaceTexture();
Surface mySurface = new Surface(mySurfaceTexture);
try {
myCaptureRequestBuilder = myCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
myCaptureRequestBuilder.addTarget(mySurface);
myCameraDevice.createCaptureSession(Arrays.asList(mySurface), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession session) {
myCameraCaptureSession = session;
myCaptureRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
try {
myCameraCaptureSession.setRepeatingRequest(myCaptureRequestBuilder.build(), null, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession session) {
}
}, null
);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
解决方案
推荐阅读
- android - Amazon IAP 2.0 示例 android 应用程序不工作
- r - r 中的嵌套循环将 df1 的列与 df2 的列相关联
- datatable - 当我尝试在 Tableau 中创建文本表时,为什么值显示为列标题?
- python - 视频上的 Tensorflow 对象检测速度慢
- python - VSCode 调试在 Python 出现异常时暂停所有进程
- javascript - 如何在 mongo 聚合查询中使用 javascript 对象
- android - 套接字连接适用于 PC,但不适用于 Android 平板电脑。Xamarin 表单应用程序
- ios - 如何自定义 UICollectionView 在水平方向左对齐
- javascript - 如何修复此错误以及如何正确编写我的 github 用户名?是有美元符号还是没有?
- azure - 来自 Azure Front Foor 剥离路径的 Azure Appservice 简单身份验证代理