android 拍照到相册
时间: 2023-08-18 20:09:56 浏览: 57
在Android中,拍照并保存到相册的过程大致分为以下几个步骤:
1. 创建一个用于拍照的Intent对象,设置拍照后存储照片的路径和文件名。
2. 调用startActivityForResult()方法启动拍照Intent。
3. 在onActivityResult()方法中获取拍照结果,并将照片保存到相册中。
以下是示例代码:
```java
// 定义拍照的请求码
private static final int REQUEST_CAPTURE_IMAGE = 100;
// 拍照后保存照片的路径和文件名
private String mImagePath;
// 创建用于拍照的Intent对象
private void captureImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 设置照片存储的路径和文件名
mImagePath = getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/" + System.currentTimeMillis() + ".jpg";
File imageFile = new File(mImagePath);
Uri uri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", imageFile);
} else {
uri = Uri.fromFile(imageFile);
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, REQUEST_CAPTURE_IMAGE);
}
// 获取拍照结果并保存到相册中
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CAPTURE_IMAGE && resultCode == RESULT_OK) {
// 将照片保存到相册中
try {
MediaStore.Images.Media.insertImage(getContentResolver(), mImagePath, "", "");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 刷新相册
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + mImagePath)));
}
}
```
需要注意的是,Android 7.0及以上版本需要通过FileProvider来获取照片的Uri,否则会出现FileUriExposedException异常。同时,保存照片到相册需要WRITE_EXTERNAL_STORAGE权限。