一、设置权限
在 AndroidManifest.xml 文件中添加相机权限和存储权限(如果需要保存数据的话):
| |
二、布局设置
在布局文件中添加一个 SurfaceView 用于显示相机预览:
| |
三、初始化相机
在 Activity 或 Fragment 中,获取 SurfaceView 实例并设置其 holder:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20SurfaceView 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(); } });初始化相机的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18private void initCamera(SurfaceHolder holder){ try { camera = Camera.open(); Camera.Parameters parameters = camera.getParameters(); // 设置相机参数,如预览尺寸等 List<Size> previewSizes = parameters.getSupportedPreviewSizes(); Size previewSize = previewSizes.get(0); parameters.setPreviewSize(previewSize.width, previewSize.height); camera.setParameters(parameters); // 设置预览的 Surface camera.setPreviewDisplay(holder); camera.setPreviewCallback(previewCallback); camera.startPreview(); } catch (IOException e) { e.printStackTrace(); } }
四、获取yuv数据
| |
五、释放资源
| |
以上就是在 Android 中使用 Camera1 API 获取 YUV 数据的基本步骤。在实际应用中,你可能需要根据具体需求进行适当的调整和扩展。同时,处理 YUV 数据的过程可能会比较复杂,需要根据具体的需求进行相应的处理。