
和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、实现思路与步骤
二、创建布局文件
三、获取相机信息
四、申请Camera 权限
五、获取相机参数
六、开始相机配流
七、创建Capture 请求
八、实现预览回调
九、Demo 所有代码
一、实现思路与步骤
最近项目需求是统计当前摄像头中的人脸个数,安卓有提供现成的Api,最终实现效果如下图。

1.1 分析思路和步奏:
主要使用到的类:SurfaceView、CameraManager、CameraDevice.StateCallback、CameraCaptureSession.StateCallback。
1.通过SurfaceView展示预览区。
2.在SurfaceView创建成功后通过CameraManager获取当前设备可用的摄像头。
3.检测摄像头权限。
4.通过CameraManager打开摄像头。
5.在打开成功的回调中通过CameraDevice创建会话。
6.在会话创建成功的回调方法中创建预览请求。
7.在预览请求的回调方法onCaptureCompleted()方法中获取预览界面中返回的人脸数。
以下是实现步奏:
二、创建布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<SurfaceView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
java
cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
surfaceHolder = sv.getHolder();
surface = surfaceHolder.getSurface();
三、获取相机信息
//获取可用的相机列表
String[] cameraIdList = cameraManager.getCameraIdList();
四、申请Camera 权限
if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// Activity#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for Activity#requestPermissions for more details.
return;
}
五、获取相机参数
//获取开启相机的相关参数

最低0.47元/天 解锁文章
1718

被折叠的 条评论
为什么被折叠?



