android studio 31的拍照和打开相册 java代码
时间: 2024-09-25 08:08:40 浏览: 35
Android Studio 3.1 提供了丰富的API来处理应用内的拍照和访问用户相册的功能。以下是使用Java编写的基本步骤:
1. **添加权限**:
首先,在`AndroidManifest.xml`文件中添加相机和存储读取权限:
```xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
2. **开启相机功能**(拍照):
使用`ACTION_IMAGE_CAPTURE`启动相机并获取图片数据:
```java
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
```
然后在`onActivityResult()`中接收并保存照片:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
// 保存图片到特定路径或上传至服务器
}
}
```
3. **打开相册选择图片**:
使用`ACTION_PICK`让用户从相册选择图片:
```java
Intent pickImageIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickImageIntent, REQUEST_SELECT_PICTURE);
```
在回调中获取选中的图片URI:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SELECT_PICTURE && resultCode == RESULT_OK) {
Uri selectedImage = data.getData();
// 处理选中的图片
}
}
```
请注意,为了保证兼容性和隐私保护,你应该在运行时请求具体的权限,并在用户授权后才能进行相应的操作。