Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5d03850 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add support for simpler Lat/Long values"

parents aede9ec4 a83cc458
Loading
Loading
Loading
Loading
+18 −12
Original line number Diff line number Diff line
@@ -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);
                }
            }
        }
−1.58 MiB (2.46 MiB)
Loading image diff...
+5 −3
Original line number Diff line number Diff line
@@ -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],
+2 −1
Original line number Diff line number Diff line
@@ -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(",");