我正在使用拍照意图拍摄照片并将其保存到磁盘。此函数返回传递给Take Photo Intent的图像文件。
后来我用这条路读了图像文件。
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment.getExternalStorageDirectory();
storageDir.mkdirs();
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
mPhotoPath = image.getAbsolutePath();
return image;
}
此代码在我的Nexus 4设备上运行正常,mPhotoPath包含有效路径。
在运行5.0 mPhotoPath的三星Galaxy S5(SM-G900V)上为空。
答案 0 :(得分:1)
这是远程错误日志完全不正确的实例。我能够访问实际设备并在本地查看日志。
路径不为空,因为Crashlytics远程日志显示。该错误试图加载太大的位图。
调试器错误是
Bitmap too large to be uploaded into a texture (2988x5312, max=4096x4096)
这个code snippet帮助我在将位图放入ImageView
之前调整位图大小ImageView iv = (ImageView)waypointListView.findViewById(R.id.waypoint_picker_photo);
Bitmap d = new BitmapDrawable(ctx.getResources() , w.photo.getAbsolutePath()).getBitmap();
int nh = (int) ( d.getHeight() * (512.0 / d.getWidth()) );
Bitmap scaled = Bitmap.createScaledBitmap(d, 512, nh, true);
iv.setImageBitmap(scaled);
答案 1 :(得分:0)
因为你没有设备很难说出确切的问题但是试着改变你创建图像文件的方式,你可以这样做:
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
(imageFileName + ".jpg"));
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}//else if file exist you can delete it ,or change file name
mPhotoPath = Uri.fromFile(file);