实现步骤:
1.判断摄像头是否存在
2.定义TextureView作为相机预览界面
3.设置相机参数,并打开相机
4.打开相机预览
5.拍照,图片保存
Camera2相关类学习
转载Camera2相关类学习
一、判断摄像头是否存在
使用摄像头之前,需要验证摄像头是否存在。这里需要用到PackageManager,用于检测安装设备的各种信息,可以通过Context.getPackageManager()获取。可以通过PackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)方法检测设备是否支持摄像头。
private boolean checkCamer(Context context){
if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
return true;
}
else {
return false;
}
}
二、定义TextureView作为相机预览界面
在布局文件中加入TextureView控件,并实现其监听事件
textureView = findViewById(R.id.camera_preview);
然后在onResume()中设置监听事件
textureView.setSurfaceTextureListener(textureListener);
当textureView可用时,会调用SurfaceTextureListener的onSurfaceTextureAvailable()方法:
TextureView.SurfaceTextureListener textureListener = new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
//当SurefaceTexture可用的时候,设置相机参数并打开相机
}
}
三、设置相机参数,并打开相机
根据TextureView的尺寸设置预览尺寸,使用CameraManager来管理摄像头。通过getSystemService(Context.CAMERA_SERVICE)来获取CameraManager对象。通过CameraManager.getCameraIdList()来获取所有摄像头。
//设置相机参数
private void setupCamera(int width, int height){
mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
String[] cameraList = mCameraManager.getCameraIdList();
if (cameraList.length == 0) {
//没有可用相机
return;
}
for