我遇到了这样的问题,Android 10无法从我的jpeg文件中读取GPS信息。但在Android 9中,完全相同的文件可以正常工作。
我尝试了ExifInterface(androidx),但它返回null;同时apache commons imaging表示“GPSLatitude: Invalid rational (0/0), Invalid rational (0/0)。”
像评分或XPKeywords等其他exif信息可以被正确读取。
如何解决这个问题?
测试代码:
所有的getAttribute调用在Android Q/10上都返回null。在Android 9上它是可以工作的。我的测试照片包含GPS信息,但是甚至Android本身也无法将GPS位置索引到他们的媒体存储中。他们数据库中的字段也为空。我通过邮件传输了测试照片。
import androidx.exifinterface.media.ExifInterface;
ExifInterface exif2 = new ExifInterface(is);
double[] latLngArray = exif2.getLatLong();
getLatLong 实现:
public double[] getLatLong() {
String latValue = getAttribute(TAG_GPS_LATITUDE);
String latRef = getAttribute(TAG_GPS_LATITUDE_REF);
String lngValue = getAttribute(TAG_GPS_LONGITUDE);
String lngRef = getAttribute(TAG_GPS_LONGITUDE_REF);
if (latValue != null && latRef != null && lngValue != null && lngRef != null) {
try {
double latitude = convertRationalLatLonToDouble(latValue, latRef);
double longitude = convertRationalLatLonToDouble(lngValue, lngRef);
return new double[] {latitude, longitude};
} catch (IllegalArgumentException e) {
Log.w(TAG, "Latitude/longitude values are not parseable. " +
String.format("latValue=%s, latRef=%s, lngValue=%s, lngRef=%s",
latValue, latRef, lngValue, lngRef));
}
}
return null;
}
所有的getAttribute调用在Android Q/10上都返回null。在Android 9上它是可以工作的。我的测试照片包含GPS信息,但是甚至Android本身也无法将GPS位置索引到他们的媒体存储中。他们数据库中的字段也为空。我通过邮件传输了测试照片。