android studio 调用系统相机后,如何获取拍照照片的uri
时间: 2024-01-10 20:05:57 浏览: 232
Android调用系统照相机拍照与摄像的方法
在调用系统相机拍摄照片后,可以通过以下步骤获取照片的Uri:
1. 在调用相机时,使用`startActivityForResult()`方法启动相机,并传递一个请求码,例如:
```
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
```
2. 在`onActivityResult()`方法中获取相机返回的数据,包括照片的缩略图和Uri:
```
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
Uri photoUri = data.getData();
// 处理照片
}
}
```
如果需要直接获取照片的Uri,可以通过以下步骤:
```
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Uri photoUri = data.getData();
if (photoUri == null) {
// 如果返回的Uri为null,则通过Intent中的extras获取照片数据,并将其保存到指定路径中
Bitmap imageBitmap = (Bitmap) data.getExtras().get("data");
photoUri = saveImage(imageBitmap);
}
// 处理照片
}
}
private Uri saveImage(Bitmap imageBitmap) {
// 将照片保存到指定路径,并返回其Uri
File imageFile = new File(getExternalFilesDir(null), "photo.jpg");
try (OutputStream os = new FileOutputStream(imageFile)) {
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
} catch (IOException e) {
e.printStackTrace();
}
return Uri.fromFile(imageFile);
}
```
在上述代码中,如果返回的Uri为null,则通过Intent中的extras获取照片数据,并将其保存到指定路径中,然后返回该路径对应的Uri。注意,这种方式获取的是照片的缩略图,如果需要获取原始照片,可以通过保存照片到指定路径的方式来实现。
阅读全文