在我的应用程序中使用exif接口将新数据写入存储的图像,使用Android中的相机意图捕获。
问题是当图像文件输出到存储器时,当我查看图库中图像的details
时,我更新图像属性的代码实际上并没有更新存储的图像。 / p>
例如,我使用UserComment
标记添加一些通用文字作为测试输入,但这不会显示在设备的图片详细信息中。
我的问题是,如何检查数据是否实际写入文件?
如果我知道属性被附加到图像,那么我可以调试文件的存储作为问题。
这是getOutputPhotoFile()
方法,用于检索项目目录中最后捕获的图像:
private File getOutputPhotoFile() throws IOException {
File directory = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), getPackageName());
if (!directory.exists()) {
if (!directory.mkdirs()) {
Log.e(TAG, "Failed to create storage directory.");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
File[] files = directory.listFiles();
File origFile = new File(directory.getPath(), "IMG_" + timeStamp + ".jpg");
if(files.length!=0) {
File newestFile = files[files.length-1];
origFile = new File(directory.getPath() + File.separator + newestFile.getName());
}
String mString = "Generic Text..";
ExifInterface exifFile = new ExifInterface(origFile.getAbsolutePath());
exifFile.setAttribute("UserComment", mString);
exifFile.setAttribute(ExifInterface.TAG_GPS_LATITUDE,
String.valueOf(latituteField.toString()));
exifFile.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,
String.valueOf(longitudeField.toString()));
exifFile.saveAttributes();
return origFile;
}
答案 0 :(得分:0)
在查看ExifInterface API时,似乎没有名为" UserComment"的Exif TAG。
它似乎只支持给定API中提到的TAG。
设置位置值后,您可以使用相同的ExifInterface API getAttribute(ExifInterface.TAG_GPS_LATITUDE,)
和getAttribute(ExifInterface.TAG_GPS_LONGITUDE)
来检查文件是否设置了值。