Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 4.4和更早版本的Exif标签不同?_Android_Exif - Fatal编程技术网

Android 4.4和更早版本的Exif标签不同?

Android 4.4和更早版本的Exif标签不同?,android,exif,Android,Exif,我的问题是,我试图从exif标签获取GPS位置,因此我在网上找到了以下代码: Uri selectedImage = imageReturnedIntent.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.

我的问题是,我试图从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台设备上运行上述代码:

Nexus7Android 4.4.2 平板电脑F7HD安卓4.0.4 Genymotion安卓4.3 选项存储位置在所有选项上都处于启用状态。然后我在每张照片上拍照,位置存储在这些照片上,因为我打开照片应用程序Google+,打开照片并选择详细信息,应用程序会准确返回拍照的位置

但当我运行代码时,只有Nexus7上拍摄的照片返回GPS信息。其余的返回null。我将Nexus7的照片复制到我的Genymotion和F7HD上,我的代码也可以正常工作


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

您是否尝试过将照片从F7HD或Genymotion复制到Nexus 7,并检查您的代码是否正确解析?我已经这样做了,但只有Google+的照片才能读取它,简而言之,我的代码不适用于Nexus 7上捕获的照片。我不知道为什么它不能和其他的一起工作。首先,你的平板电脑有GPS模块吗?其次,Genymotion不是模拟器吗?首先,我的平板电脑绝对有GPS模块。其次,Genymotion只是一个模拟器,但它也模拟GPS,我在Genymotion上放了一张照片,Google+中的应用程序照片仍然可以识别照片中的GPS位置。