diff options
| -rw-r--r-- | core/java/android/provider/MetadataReader.java | 30 | ||||
| -rw-r--r-- | core/tests/utiltests/res/drawable/image.jpg | bin | 4235308 -> 2580618 bytes | |||
| -rw-r--r-- | core/tests/utiltests/src/android/util/MetadataReaderTest.java | 8 | ||||
| -rw-r--r-- | media/java/android/media/ExifInterface.java | 3 |
4 files changed, 25 insertions, 16 deletions
diff --git a/core/java/android/provider/MetadataReader.java b/core/java/android/provider/MetadataReader.java index 2d1fca029c1c..5aa5f72ab788 100644 --- a/core/java/android/provider/MetadataReader.java +++ b/core/java/android/provider/MetadataReader.java @@ -44,7 +44,9 @@ public final class MetadataReader { ExifInterface.TAG_IMAGE_LENGTH, ExifInterface.TAG_DATETIME, ExifInterface.TAG_GPS_LATITUDE, + ExifInterface.TAG_GPS_LATITUDE_REF, ExifInterface.TAG_GPS_LONGITUDE, + ExifInterface.TAG_GPS_LONGITUDE_REF, ExifInterface.TAG_MAKE, ExifInterface.TAG_MODEL, ExifInterface.TAG_APERTURE, @@ -166,9 +168,9 @@ public final class MetadataReader { TYPE_MAPPING.put(ExifInterface.TAG_GPS_DIFFERENTIAL, TYPE_INT); TYPE_MAPPING.put(ExifInterface.TAG_GPS_IMG_DIRECTION, TYPE_DOUBLE); TYPE_MAPPING.put(ExifInterface.TAG_GPS_IMG_DIRECTION_REF, TYPE_STRING); - TYPE_MAPPING.put(ExifInterface.TAG_GPS_LATITUDE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_LATITUDE, TYPE_STRING); TYPE_MAPPING.put(ExifInterface.TAG_GPS_LATITUDE_REF, TYPE_STRING); - TYPE_MAPPING.put(ExifInterface.TAG_GPS_LONGITUDE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_LONGITUDE, TYPE_STRING); TYPE_MAPPING.put(ExifInterface.TAG_GPS_LONGITUDE_REF, TYPE_STRING); TYPE_MAPPING.put(ExifInterface.TAG_GPS_MAP_DATUM, TYPE_STRING); TYPE_MAPPING.put(ExifInterface.TAG_GPS_MEASURE_MODE, TYPE_STRING); @@ -215,7 +217,9 @@ public final class MetadataReader { * ExifInterface.TAG_IMAGE_LENGTH, * ExifInterface.TAG_DATETIME, * ExifInterface.TAG_GPS_LATITUDE, + * ExifInterface.TAG_GPS_LATITUDE_REF, * ExifInterface.TAG_GPS_LONGITUDE, + * ExifInterface.TAG_GPS_LONGITUDE_REF, * ExifInterface.TAG_MAKE, * ExifInterface.TAG_MODEL, * ExifInterface.TAG_APERTURE, @@ -250,7 +254,9 @@ public final class MetadataReader { * ExifInterface.TAG_IMAGE_LENGTH, * ExifInterface.TAG_DATETIME, * ExifInterface.TAG_GPS_LATITUDE, + * ExifInterface.TAG_GPS_LATITUDE_REF, * ExifInterface.TAG_GPS_LONGITUDE, + * ExifInterface.TAG_GPS_LONGITUDE_REF, * ExifInterface.TAG_MAKE, * ExifInterface.TAG_MODEL, * ExifInterface.TAG_APERTURE, @@ -262,21 +268,21 @@ public final class MetadataReader { tags = DEFAULT_EXIF_TAGS; } Bundle exif = new Bundle(); - for (int i = 0; i < tags.length; i++) { - if (TYPE_MAPPING.get(tags[i]).equals(TYPE_INT)) { - int data = exifInterface.getAttributeInt(tags[i], Integer.MIN_VALUE); + for (String tag : tags) { + if (TYPE_MAPPING.get(tag).equals(TYPE_INT)) { + int data = exifInterface.getAttributeInt(tag, Integer.MIN_VALUE); if (data != Integer.MIN_VALUE) { - exif.putInt(tags[i], data); + exif.putInt(tag, data); } - } else if (TYPE_MAPPING.get(tags[i]).equals(TYPE_DOUBLE)) { - double data = exifInterface.getAttributeDouble(tags[i], Double.MIN_VALUE); + } else if (TYPE_MAPPING.get(tag).equals(TYPE_DOUBLE)) { + double data = exifInterface.getAttributeDouble(tag, Double.MIN_VALUE); if (data != Double.MIN_VALUE) { - exif.putDouble(tags[i], data); + exif.putDouble(tag, data); } - } else if (TYPE_MAPPING.get(tags[i]).equals(TYPE_STRING)) { - String data = exifInterface.getAttribute(tags[i]); + } else if (TYPE_MAPPING.get(tag).equals(TYPE_STRING)) { + String data = exifInterface.getAttribute(tag); if (data != null) { - exif.putString(tags[i], data); + exif.putString(tag, data); } } } diff --git a/core/tests/utiltests/res/drawable/image.jpg b/core/tests/utiltests/res/drawable/image.jpg Binary files differindex bef1fb111f89..b539fcfdeb94 100644 --- a/core/tests/utiltests/res/drawable/image.jpg +++ b/core/tests/utiltests/res/drawable/image.jpg diff --git a/core/tests/utiltests/src/android/util/MetadataReaderTest.java b/core/tests/utiltests/src/android/util/MetadataReaderTest.java index 193fb50b06f3..a828edbac6ab 100644 --- a/core/tests/utiltests/src/android/util/MetadataReaderTest.java +++ b/core/tests/utiltests/src/android/util/MetadataReaderTest.java @@ -56,9 +56,11 @@ public class MetadataReaderTest extends TestCase { Bundle exif = mData.getBundle(DocumentsContract.METADATA_EXIF); assertEquals("3036", String.valueOf(exif.getInt(ExifInterface.TAG_IMAGE_WIDTH))); assertEquals("4048", String.valueOf(exif.getInt(ExifInterface.TAG_IMAGE_LENGTH))); - assertEquals("2017:07:17 19:19:28", exif.getString(ExifInterface.TAG_DATETIME)); - assertEquals(0.0, exif.getDouble(ExifInterface.TAG_GPS_LATITUDE)); - assertEquals(0.0, exif.getDouble(ExifInterface.TAG_GPS_LONGITUDE)); + assertEquals("2017:07:26 21:06:25", exif.getString(ExifInterface.TAG_DATETIME)); + assertEquals("33/1,59/1,4530/100", exif.getString(ExifInterface.TAG_GPS_LATITUDE)); + assertEquals("N", exif.getString(ExifInterface.TAG_GPS_LATITUDE_REF)); + assertEquals("118/1,28/1,3124/100", exif.getString(ExifInterface.TAG_GPS_LONGITUDE)); + assertEquals("W", exif.getString(ExifInterface.TAG_GPS_LONGITUDE_REF)); assertEquals("Google", exif.getString(ExifInterface.TAG_MAKE)); assertEquals("Pixel", exif.getString(ExifInterface.TAG_MODEL)); assertEquals(mData.getStringArray(DocumentsContract.METADATA_TYPES)[0], diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java index 6677178514e0..7cdde5f6bbb4 100644 --- a/media/java/android/media/ExifInterface.java +++ b/media/java/android/media/ExifInterface.java @@ -2069,7 +2069,8 @@ public class ExifInterface { } } - private static float convertRationalLatLonToFloat(String rationalString, String ref) { + /** {@hide} */ + public static float convertRationalLatLonToFloat(String rationalString, String ref) { try { String [] parts = rationalString.split(","); |