Loading core/java/android/provider/MetadataReader.java +18 −12 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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); Loading Loading @@ -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, Loading Loading @@ -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, Loading @@ -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); } } } Loading core/tests/utiltests/res/drawable/image.jpg −1.58 MiB (2.46 MiB) Loading image diff... core/tests/utiltests/src/android/util/MetadataReaderTest.java +5 −3 Original line number Diff line number Diff line Loading @@ -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], Loading media/java/android/media/ExifInterface.java +2 −1 Original line number Diff line number Diff line Loading @@ -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(","); Loading Loading
core/java/android/provider/MetadataReader.java +18 −12 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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); Loading Loading @@ -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, Loading Loading @@ -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, Loading @@ -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); } } } Loading
core/tests/utiltests/src/android/util/MetadataReaderTest.java +5 −3 Original line number Diff line number Diff line Loading @@ -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], Loading
media/java/android/media/ExifInterface.java +2 −1 Original line number Diff line number Diff line Loading @@ -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(","); Loading