camera2相机实现预览功能
一、申请权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
二、在xml布局文件中定义一个TextureView
surfaceview也行
<TextureView
android:id="@+id/textureView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
三、准备工作(启动线程,mTextureView设置listener)
//为摄像头开一个线程
//因为打开相机和创建会话等都是耗时操作,所以我们启动一个HandlerThread在子线程中来处理
private void startHandler() {
handlerThread = new HandlerThread("camera");
handlerThread.start();
cameraHandler = new Handler(handlerThread.getLooper());//handler与线程进行绑定
}
//关闭线程
private void destoryHandler() {
if (handlerThread == null) {
return;
}
handlerThread.quitSafely();
try {
handlerThread.join(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void initData() {
//刚开始的时候就要启动线程
startHandler();
//mTextureView设置listener,当Available时,设置camera的信息
mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
@Override
public void