Android使用Camera2获取yuv数据

一、声明必要的权限 在 Android 项目中,需要在AndroidManifest.xml文件中添加相机使用权限: 1 <uses-permission android:name = "android.permission.CAMERA"/> 二、创建管理器 在 Java 或 Kotlin 代码中,创建一个CameraManager实例来管理相机设备: 在java中: 1 CameraManager cameraManager = (CameraManager)getSystemService(Context.CAMERA_SERVICE); 在Kotlin中: 1 val cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager 三、获取相机信息 查询相机列表,找到要打开的目标相机: 在java中: 1 2 3 4 5 6 7 8 9 10 String[] cameraIds = cameraManager.getCameraIdList(); String rearCameraId = null; for (String id : cameraIds) { CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(id); Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING); if (facing!= null && facing == CameraCharacteristics.LENS_FACING_BACK) { rearCameraId = id; break; } } 在Kotlin中: ...

2024-10-08 · 3 分钟 · 1041 字 · lixb

Android使用Camera1获取yuv数据

一、设置权限 在 AndroidManifest.xml 文件中添加相机权限和存储权限(如果需要保存数据的话): 1 2 <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 二、布局设置 在布局文件中添加一个 SurfaceView 用于显示相机预览: 1 2 3 4 <SurfaceView android:id="@+id/surfaceView" android:layout_width="match_parent" android:layout_height="match_parent" /> 三、初始化相机 在 Activity 或 Fragment 中,获取 SurfaceView 实例并设置其 holder: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 SurfaceView surfaceView = findViewById(R.id.surfaceView); SurfaceHolder surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { // Surface 创建时初始化相机 initCamera(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // Surface 尺寸改变时 } @Override public void surfaceDestroyed(SurfaceHolder holder) { // Surface 销毁时释放相机资源 releaseCamera(); } }); 初始化相机的方法: ...

2024-09-25 · 1 分钟 · 469 字 · lixb