Android 调用系统相机拍照381


在 Android 开发中,调用系统相机拍照是一个常见需求。Android 提供了多种 API,用于与系统相机交互并捕获图像。本文详细介绍了 Android 中调用系统相机拍照的步骤,包括打开相机、设置拍照参数、捕获图像和处理结果。1. 导入必要的库
在使用相机 API 之前,需要导入以下库:
```Java
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
```
2. 检查相机权限
在使用相机之前,需要检查用户是否授予了相机权限。如果未授予权限,需要请求权限。
```Java
if (checkSelfPermission() != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{}, REQUEST_CAMERA_PERMISSION);
}
```
3. 创建意图并启动相机
要调用系统相机,需要创建一个意图并启动相机活动。
```Java
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
```
4. 设置拍照参数(可选)
在启动相机之前,可以设置拍照参数,例如图像质量、分辨率和目标文件路径。
```Java
Bundle extras = new Bundle();
(MediaStore.EXTRA_OUTPUT, (imageFile));
(MediaStore.EXTRA_JPEG_QUALITY, 100);
(extras);
```
5. 处理相机结果
在相机活动返回后,需要处理相机结果。如果捕获图像成功,结果中将包含一个图像 URI。
```Java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {
Uri imageUri = ();
try {
Bitmap bitmap = (getContentResolver(), imageUri);
(bitmap);
} catch (IOException e) {
();
}
}
}
```
6. 释放资源
使用相机后,需要释放资源。
```Java
@Override
protected void onDestroy() {
();
(null);
}
```
7. 示例代码
以下是一个调用系统相机拍照的示例代码:
```Java
public class CameraActivity extends Activity {
private static final int REQUEST_CAMERA_PERMISSION = 1;
private static final int REQUEST_IMAGE_CAPTURE = 2;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
(savedInstanceState);
setContentView(.activity_camera);
imageView = findViewById();
Button button = findViewById();
(new () {
@Override
public void onClick(View v) {
if (checkSelfPermission() != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{}, REQUEST_CAMERA_PERMISSION);
} else {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {
Uri imageUri = ();
try {
Bitmap bitmap = (getContentResolver(), imageUri);
(bitmap);
} catch (IOException e) {
();
}
}
}
@Override
protected void onDestroy() {
();
(null);
}
}
```

2024-10-11


上一篇:Android 信息管理系统:全面指南

下一篇:Android 信息管理系统:揭开 Android 操作系统的存储和检索机制