- 确保在AndroidManifest.xml中添加了相机权限:
- 在布局文件中添加一个ImageView组件:
- 在活动中,使用Camera和PreviewCallback获取图像数据:
private Camera mCamera;
private CameraPreview mPreview;
private ImageView mImageView;
...
//获取相机实例
mCamera = getCameraInstance();
//创建预览视图并设置宽高
mPreview = new CameraPreview(this, mCamera);
mPreview.setFixedSize(mPreview.getWidth(), mPreview.getHeight());
//将预览视图添加到布局中
FrameLayout previewLayout = findViewById(R.id.camera_preview);
previewLayout.addView(mPreview);
//添加回调,获取图像数据
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
//将获取的图像数据转换为Bitmap
Camera.Size size = camera.getParameters().getPreviewSize();
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
//旋转Bitmap
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, size.width, size.height, matrix, true);
//将Bitmap显示在ImageView中
mImageView.setImageBitmap(rotatedBitmap);
}
});
- 最后,在活动销毁时,释放相机资源:
@Override
protected void onDestroy() {
super.onDestroy();
if (mCamera != null) {
mCamera.setPreviewCallback(null);
mPreview.getHolder().removeCallback(mPreview);
mCamera.release();
mCamera = null;
}
}