Android 4.4及更早版本的Exif标签有何不同?

时间:2014-01-12 06:20:49

标签: android exif

这是我的问题,我试图从exif标签获取GPS位置,所以我在网上找到这些代码:

Uri selectedImage = imageReturnedIntent.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
ExifInterface exif = new ExifInterface(filePath);
String exifString = "Exif: " + filePath;
exifString += "\nGPS related:";
exifString += "\nTAG_GPS_DATESTAMP: "+ exif.getAttribute(ExifInterface.TAG_GPS_DATESTAMP);
exifString += "\nTAG_GPS_TIMESTAMP: "+ exif.getAttribute(ExifInterface.TAG_GPS_TIMESTAMP);
String attrLATITUDE = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE);
String attrLATITUDE_REF = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF);
String attrLONGITUDE = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);
String attrLONGITUDE_REF = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF);
if ((attrLATITUDE != null) && (attrLATITUDE_REF != null)
    && (attrLONGITUDE != null)
    && (attrLONGITUDE_REF != null)) {
if ("N".equals(attrLATITUDE_REF)) {
    lat = convertToDegree(attrLATITUDE);
} else {
    lat = -convertToDegree(attrLATITUDE);
}
    if ("E".equals(attrLONGITUDE_REF)) {
    lng = convertToDegree(attrLONGITUDE);
} else {
    lng = -convertToDegree(attrLONGITUDE);
}
    exifString += "\nTAG_GPS_LATITUDE: " + lat;
    exifString += "\nTAG_GPS_LONGITUDE: " + lng;
}
textView.setText(exifString);

我在3台设备上运行上述代码:

  1. Nexus 7(Android 4.4.2)
  2. Tablet F7HD(Android 4.0.4)
  3. Genymotion(Android 4.3)
  4. 选项“存储位置”在所有这些选项上启用。然后我在每张照片上拍照,因为我打开“照片”应用程序(Google+),打开照片并选择详细信息,应用程序将准确地返回拍摄照片的位置。

    但是当我运行我的代码时,只有在Nexus 7上捕获的照片会返回GPS信息。其余的返回null。我将Nexus 7的照片复制到我的Genymotion和F7HD,我的代码也可以正常工作。

    有什么想法吗?我真的需要获取GPS信息才能在我的顶点项目中完成一项任务。

0 个答案:

没有答案