android studio照相机调用
时间: 2023-10-16 15:09:28 浏览: 152
Android相机调用
在 Android Studio 中调用相机需要以下几个步骤:
1. 在 AndroidManifest.xml 文件中添加相机的权限:
```xml
<uses-permission android:name="android.permission.CAMERA" />
```
2. 在布局文件中添加一个用于预览相机的 SurfaceView 或 TextureView:
```xml
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
3. 在相应的 Activity 或 Fragment 中获取 Camera 实例,并设置预览显示:
```java
private Camera mCamera;
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSurfaceView = findViewById(R.id.surfaceView);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// 打开相机并设置预览显示
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// 预览尺寸发生变化时处理
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// 关闭相机释放资源
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}
```
4. 添加拍照功能,通过调用 `Camera.takePicture()` 方法实现:
```java
private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
// 处理拍照数据
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
// 保存或展示拍照结果
}
};
public void takePicture(View view) {
if (mCamera != null) {
mCamera.takePicture(null, null, mPictureCallback);
}
}
```
以上是一个简单的调用相机并拍照的示例,你可以根据需要进行更加详细的定制和功能扩展。
阅读全文