似乎没有这样的方法可以做到这一点,除了可能使用反射来访问ExifInterface
类中的私有属性。然而,这是不鼓励的,因为当然,实现可能会在未来的版本中中断。为简洁起见,我在下面写了如何做到这一点。
也就是说,您可以使用Apache Sanslean 之类的东西来做您正在寻找的东西:http: //bricolsoftconsulting.com/copying-exif-metadata-using-sanselan/。但是,我自己没有尝试过,所以我不能说更多
使用反射
查看ExifInterface
源代码,似乎没有获取所有标签的“标准”方式。但是,您可以使用反射来读取mAttributes
所有键的映射(虽然这不太安全,但这是最后的手段)。像这样的东西应该可以工作(Java):
Field f = obj.getClass().getDeclaredField("mAttributes");
f.setAccessible(true);
HashMap<String, ExifAttribute>[] attributes = (HashMap<String, ExifAttribute>[]) f.get(obj);
然后,您可以以相同的方式使用反射来访问目标ExifInterface
并将所有字段复制到其中。
请注意,我查看了 AndroidX 版本ExifInterface
,它是原始类的超集,也是推荐使用的类,但在其他情况下也应如此。