Android studio 拍照后保存在系统相册中的详细教程
时间: 2024-05-14 19:19:30 浏览: 188
好的,关于在 Android Studio 中拍照后保存在系统相册的详细教程,可以按照以下步骤进行操作:
1. 添加权限:在 AndroidManifest.xml 文件中添加以下权限:
```
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
2. 创建FileProvider:在 AndroidManifest.xml 文件中添加以下代码:
```
<application>
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
...
</application>
```
其中,`android:authorities` 可以替换为你自己应用的包名,`@xml/provider_paths` 中的 `provider_paths` 可以通过右键点击`res`文件夹,选择"New" -> "Android resource file"创建一个 XML 文件,并将以下代码添加到其中:
```
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="my_images"
path="Android/data/com.example.myapp/files/Pictures" />
</paths>
```
3. 创建文件(在调用相机时会用到):在 `onCreate()` 方法中添加以下代码:
```
private File createImageFile() throws IOException {
// 创建文件名
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
String imageName = "JPEG_" + timeStamp + "_";
// 获取保存的路径
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
// 通过文件路径和文件名创建一个空白的文件对象
File image = File.createTempFile(imageName, ".jpg", storageDir);
// 记录文件路径,之后用来获取图片
currentPhotoPath = image.getAbsolutePath();
return image;
}
```
4. 调用相机:在你需要调用相机的地方添加以下代码:
```
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
}
if (photoFile != null) {
Uri photoUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", photoFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}
}
```
5. 获取图片:在 `onActivityResult()` 方法中添加以下代码:
```
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
File file = new File(currentPhotoPath);
//将拍摄的照片保存到系统相册
try {
MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), null);
getContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
```
以上就是在 Android Studio 中拍照后保存在系统相册的详细教程,希望对你有所帮助。
阅读全文