Merge "Improved conversion accuracy of exif geotag data" into honeycomb
This commit is contained in:
@ -299,12 +299,16 @@ public class ExifInterface {
|
|||||||
String lngRef = mAttributes.get(ExifInterface.TAG_GPS_LONGITUDE_REF);
|
String lngRef = mAttributes.get(ExifInterface.TAG_GPS_LONGITUDE_REF);
|
||||||
|
|
||||||
if (latValue != null && latRef != null && lngValue != null && lngRef != null) {
|
if (latValue != null && latRef != null && lngValue != null && lngRef != null) {
|
||||||
output[0] = convertRationalLatLonToFloat(latValue, latRef);
|
try {
|
||||||
output[1] = convertRationalLatLonToFloat(lngValue, lngRef);
|
output[0] = convertRationalLatLonToFloat(latValue, latRef);
|
||||||
return true;
|
output[1] = convertRationalLatLonToFloat(lngValue, lngRef);
|
||||||
} else {
|
return true;
|
||||||
return false;
|
} catch (IllegalArgumentException e) {
|
||||||
|
// if values are not parseable
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -373,12 +377,12 @@ public class ExifInterface {
|
|||||||
|
|
||||||
String [] pair;
|
String [] pair;
|
||||||
pair = parts[0].split("/");
|
pair = parts[0].split("/");
|
||||||
int degrees = (int) (Float.parseFloat(pair[0].trim())
|
double degrees = Double.parseDouble(pair[0].trim())
|
||||||
/ Float.parseFloat(pair[1].trim()));
|
/ Double.parseDouble(pair[1].trim());
|
||||||
|
|
||||||
pair = parts[1].split("/");
|
pair = parts[1].split("/");
|
||||||
int minutes = (int) ((Float.parseFloat(pair[0].trim())
|
double minutes = Double.parseDouble(pair[0].trim())
|
||||||
/ Float.parseFloat(pair[1].trim())));
|
/ Double.parseDouble(pair[1].trim());
|
||||||
|
|
||||||
pair = parts[2].split("/");
|
pair = parts[2].split("/");
|
||||||
double seconds = Double.parseDouble(pair[0].trim())
|
double seconds = Double.parseDouble(pair[0].trim())
|
||||||
@ -389,10 +393,12 @@ public class ExifInterface {
|
|||||||
return (float) -result;
|
return (float) -result;
|
||||||
}
|
}
|
||||||
return (float) result;
|
return (float) result;
|
||||||
} catch (RuntimeException ex) {
|
} catch (NumberFormatException e) {
|
||||||
// if for whatever reason we can't parse the lat long then return
|
// Some of the nubmers are not valid
|
||||||
// null
|
throw new IllegalArgumentException();
|
||||||
return 0f;
|
} catch (ArrayIndexOutOfBoundsException e) {
|
||||||
|
// Some of the rational does not follow the correct format
|
||||||
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user