要在Android Studio中实现相机预览,你可以遵循以下步骤:
public class CameraPreviewActivity extends AppCompatActivity implements SurfaceHolder.Callback {
private Camera mCamera;
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera_preview);
mSurfaceView = findViewById(R.id.surfaceView);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open(); // 打开相机
try {
mCamera.setPreviewDisplay(holder); // 设置预览的SurfaceHolder
mCamera.startPreview(); // 开始预览
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// 相机预览的Surface发生改变时调用,可以在此处重新设置相机参数
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview(); // 停止预览
mCamera.release(); // 释放相机资源
}
}
在上述代码中,我们通过Camera.open()
方法打开相机,并将预览的SurfaceHolder设置给相机,然后调用Camera.startPreview()
开始预览。在surfaceChanged
方法中,可以根据需要重新设置相机的参数,例如调整预览尺寸、图片格式等。
记得在AndroidManifest.xml中添加相机权限,否则可能会出现权限错误。还要注意,在Android 6.0及以上版本中,需要在运行时动态请求相机权限。