前面两篇介绍了Camera1和Camera2的使用,发现Camera API从1到2的变化非常大,Camera2的复杂度提升了不少,官方为了让我们更容易使用Camera,出了个一个官方的库cameraview。不过这个库已经Deprecated,官方建议使用Jetpack CameraX 替代。本篇文章就介绍下CameraView和CameraX的使用
CameraView
CameraView的目的就是帮助开发者能够快速集成Camera1和Camera2的特性,可以用下面这张表来说明:
API Level
Camera API
Preview View
9-13
Camera1
SurfaceView
14-20
Camera1
TextureView
21-23
Camera2
TextureView
24
Camera2
SurfaceView
开发流程
CameraView定义
xml中定义
android:id="@+id/camera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:keepScreenOn="true"
android:adjustViewBounds="true"
app:autoFocus="true"
app:aspectRatio="4:3"
app:facing="back"
app:flash="auto"/>
复制代码
xml中可以配置:
autoFocus:是否自动对焦
aspectRatio:预览画面比例
facing:前后摄像头
flash:闪光灯模式
增加生命周期
@Override
protected void onResume(){
super.onResume();
mCameraView.start();
}
@Override
protected void onPause(){
mCameraView.stop();
super.onPause();
}
复制代码
这样声明后,就可以完成预览的工作了
相机状态回调
在xml声明CameraView后,增加回调
if (mCameraView != null) {
mCameraView.addCallback(mCallback);
}
...
private CameraView.Callback mCallback
= new CameraView.Callba