使用 SurfaceView 显示 Camera 图像需要经过以下四个步骤:

1. 设置权限和特性:

在 AndroidManifest.xml 文件中添加以下权限和特性:

`xml


`

2. 创建布局文件:

在 XML 布局文件中添加一个 SurfaceView 元素,用于显示 Camera 图像。例如,可以在 activity_main.xml 文件中添加以下内容:

`xml
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
`

3. 在 Activity 中初始化 Camera 和 SurfaceView:

在 Java 代码中,首先需要初始化 Camera 实例,并设置 Camera 预览的 SurfaceView。具体步骤如下:

`java
// 在 Activity 的成员变量中声明 Camera 和 SurfaceView
private Camera camera;
private SurfaceView surfaceView;

// 在 onCreate 方法中初始化 Camera 和 SurfaceView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 获取 SurfaceView 的引用
surfaceView = findViewById(R.id.surfaceView);

// 创建 Camera 实例
camera = getCameraInstance();

// 将 SurfaceHolder 与 Camera 对象绑定
SurfaceHolder holder = surfaceView.getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
// 在 Surface 被创建时打开 Camera 预览
try {
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
Log.d(TAG, "Error setting camera preview: " + e.getMessage());
}
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// 如果预览视图发生改变,则先停止预览并重新设置参数
if (holder.getSurface() == null) {
return;
}
try {
camera.stopPreview();
} catch (Exception e) {
Log.d(TAG, "Error stopping camera preview: " + e.getMessage());
}

// 设置参数并重新开始预览
try {
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
Log.d(TAG, "Error starting camera preview: " + e.getMessage());
}
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// 在 Surface 销毁时释放 Camera 资源
releaseCamera();
}
});
}

// 获取 Camera 实例的辅助方法
public static Camera getCameraInstance() {
Camera camera = null;
try {
camera = Camera.open();
} catch (Exception e) {
Log.e(TAG, "Error opening camera: " + e.getMessage());
}
return camera;
}

// 释放 Camera 资源的辅助方法
private void releaseCamera() {
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
}
}
`

4. 运行并显示 Camera 图像:

将应用程序安装到设备或模拟器上,运行应用程序,即可在 SurfaceView 上显示 Camera 图像。

以上就是在 Android 中利用 SurfaceView 显示 Camera 图像的步骤。