在Android中将EXIF标记(属性)写入并保存到JPEG图像

在Android中将EXIF标记(属性)写入并保存到JPEG图像,android,android-imageview,exif,Android,Android Imageview,Exif,我已经设法使用ExifInterface从手机上的JPEG图像中读取EXIF标签/属性(元数据),显然,我还可以设置属性和保存属性。奇怪的是,如果我在一个图像文件上设置+保存,我的应用程序就能够获取属性并显示它。我还可以在另一个应用程序(谷歌Play上的照片编辑器)中验证EXIF数据是否确实被写入 ExifInterface exif = new ExifInterface(path_to_image); String x = exif.getAttribute("UserComment");

我已经设法使用
ExifInterface
从手机上的JPEG图像中读取EXIF标签/属性(元数据),显然,我还可以设置属性和保存属性。奇怪的是,如果我在一个图像文件上设置+保存,我的应用程序就能够获取属性并显示它。我还可以在另一个应用程序(谷歌Play上的照片编辑器)中验证EXIF数据是否确实被写入

ExifInterface exif = new ExifInterface(path_to_image); 
String x = exif.getAttribute("UserComment"); // here, x is always null...

exif.setAttribute("UserComment", "testtest");
exif.saveAttributes();

x = exif.getAttribute("UserComment");  // x = "testtest"
现在,EXIF保存到JPEG文件:。 照片编辑器应用程序也对此进行了验证:

但是,如果我对set+save进行了注释,并仅对get进行了注释(在与上面相同的图像上),我的应用程序将无法获取/查看以下属性:

ExifInterface exif = new ExifInterface(path_to_image); 
String x = exif.getAttribute("UserComment");  // x = null (although we know it isn't)
所以:因为Photo Editor应用程序可以读取数据,所以我做错了(写入/保存)。另外,如果我在同一个图像文件上重新运行set+save,我的应用程序会复制相同的标签!除了简单地设置+保存,然后获取之外,还有什么其他的吗

更新:问题似乎与设备有关。虽然
UserComment
似乎不在ExiFinInterface明确支持的标记中,但某些设备仍然能够设置和获取标记中的值。它适用于Nexus'es,但不适用于我的Sony Xperia。请查看我获取(查询)和设置(更新)
UserComment
标记的代码

解决方案似乎是不使用ExiFinInterface。我要试试看


更新:更好的是,使用Apache Sanselan,

您的代码适合我。我认为您有一些简单的错误,比如您在修改哪些文件和在Photo Editor中查看哪些文件之间混淆了。

对源代码(java和c)进行了一些研究,似乎不可能出现这种行为。您的完整源代码是什么样子的?我已经错过了张贴位中的try-catch块。