照片没有保存在给定的位置

时间:2015-07-18 15:34:16

标签: android camera storage photo

我正在尝试在我的应用中拍照,然后重新显示它。当我启动相机意图时,我传递一个URI来保存照片位置。这是我创建文件的方式:

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
String imageFileName = "Waypoint_photo_" + timeStamp + ".jpg";
File storageDir = new File(PICTURE_FOLDER);
storageDir.mkdirs();
Log.v("FILE", String.format("New file: %s%s%s", PICTURE_FOLDER, File.separator, imageFileName));
return new File(storageDir, imageFileName);

图片文件夹是:

public static final String PICTURE_FOLDER = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + File.separator + "UtopiaWaypoints";

这会创建一个类似于的文件: /storage/emulated/0/Pictures/UtopiaWaypoints/Waypoint_photo_20150718_102116.jpg

在我的onActivityResult中,我从同一路径获取文件,并创建它的缩略图版本。此时如果我在设备上查看我看到的文件,但它们位于/ mnt / shell / emulated / 0 / Pictures / UtopiaWaypoints:

shell@shamu:/mnt/shell/emulated/0/Pictures/UtopiaWaypoints $ ls
Waypoint_photo_20150718_102825.jpg
Waypoint_photo_20150718_102825.png
shell@shamu:/mnt/shell/emulated/0/Pictures/UtopiaWaypoints $ pwd
/mnt/shell/emulated/0/Pictures/UtopiaWaypoints

在我的设备(nexus 6)上,/ storage / emulated存在(既不是符号链接),但它只包含" legacy"文件夹中。

因此,当我稍后尝试从/ storage / emulated目录加载文件时(这是Environment.PICTURE_DIRECTORY返回的内容,应用程序无法找到该文件。

// This line outputs something similar to:  /storage/emulated/0/Pictures/UtopiaWaypoints/Waypoint_photo_20150718_1042581116411973.png
Log.v("WPA", String.format("Loading thumbnail from: %s", Utils.getFullThumbnailPath(wayPoint.getPicture())));
Bitmap imageBitmap = BitmapFactory.decodeFile(Utils.getFullThumbnailPath(wayPoint.getPicture()));
wayPointImageView.setImageBitmap(imageBitmap);

第二行到最后一行(decodeFile)在日志中显示:

D/skia﹕ --- SkImageDecoder::Factory returned null

imageBitmap为null,ImageView为空。

我做错了什么?

0 个答案:

没有答案