我尝试使用相机意图拍摄照片,并希望获取完整尺寸图像的文件路径。我正在关注http://developer.android.com/training/camera/photobasics.html的教程。问题是,当我使用MediaStore.Images.Media.DATA
查看MediaStore.Images.Media.EXTERNAL_CONTENT_URI
列中的文件路径时,图像具有不同的路径。如何提供相同的文件路径?我查看了taking a photo and placing it in the Gallery,虽然只是将Environment.DIRECTORY_PICTURES
更改为Environment.DIRECTORY_DCIM
,但它仍然无法正常工作。
以下是拍摄照片的代码。
private Uri photoPath;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_IMAGE_CAPTURE) {
getContentResolver().notifyChange(photoPath, null);
System.out.println(photoPath);
}
}
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.camera_button) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getPackageManager()) != null) {
try {
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String image = "IMG_" + timestamp;
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File photo = File.createTempFile(image, ".jpg", storageDir);
photoPath = Uri.fromFile(photo);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoPath);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
}
}
上面的代码生成文件路径/storage/emulated/0/Pictures/IMG_20150805_121624.jpg
,而它在库中实际为/storage/emulated/0/DCIM/100MEDIA/IMAG0531.jpg
。前一条路径实际上是我的形象(正如我在photoPath
上指定的那样),但我希望得到后一条路径。我怎么能这样做?
答案 0 :(得分:0)
您必须使用Environment.DIRECTORY_DCIM
。
android API DOC清楚地显示了可以使用的各种目录的详细信息。
我希望这可以帮助您将文件保存到/storage/emulated/0/DCIM/
。