Android studio调用相机拍照并保存在相册
时间: 2023-03-02 20:01:27 浏览: 322
要在Android Studio中调用相机拍照并将照片保存到相册中,您需要执行以下步骤:
1. 首先,您需要在AndroidManifest.xml文件中添加相机和存储权限。这可以通过以下代码完成:
```
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
2. 接下来,您需要创建一个用于启动相机应用程序的Intent对象。您可以使用以下代码来创建Intent:
```
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
```
3. 如果您想要将照片保存在相册中,您需要指定照片的存储位置。您可以使用以下代码来创建一个存储位置:
```
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
}
```
在这个例子中,我们调用了一个名为createImageFile()的方法来创建一个新的空白图像文件,并返回一个File对象,该对象代表该文件。您需要实现该方法来创建一个唯一的文件名并指定文件的存储路径。
4. 在创建文件之后,您需要将其URI添加到Intent对象中。这可以通过以下代码完成:
```
Uri photoURI = FileProvider.getUriForFile(this, "com.your.package.name.fileprovider", photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
```
在这个例子中,我们使用了FileProvider来获取文件的URI。您需要将"com.your.package.name.fileprovider"替换为您应用程序的FileProvider授权的授权标识符。
5. 最后,您需要启动相机应用程序并在用户拍照后获取照片。这可以通过以下代码完成:
```
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
```
在用户拍摄照片后,您需要在onActivityResult()方法中获取照片并将其保存到相册中。这可以通过以下代码完成:
```
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
galleryAddPic();
}
}
private void galleryAddPic() {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(mCurrentPhotoPath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}
```
在这个例子中,我们调用了一个名为galleryAddPic()的方法来将照片添加到相册中。在该方法中,我们使用了一个名为MediaScannerConnection的类来扫描文件并更新媒体数据库。您需要实现该方法来将您的照片添加到相册中。
阅读全文