summaryrefslogtreecommitdiffstats
path: root/media/java
diff options
context:
space:
mode:
Diffstat (limited to 'media/java')
-rw-r--r--media/java/android/media/ExifInterface.java40
-rw-r--r--media/java/android/media/MediaFile.java9
2 files changed, 42 insertions, 7 deletions
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index b26906d..74488c5 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -51,6 +51,19 @@ public class ExifInterface {
public static final String TAG_GPS_LATITUDE_REF = "GPSLatitudeRef";
/** Type is String. */
public static final String TAG_GPS_LONGITUDE_REF = "GPSLongitudeRef";
+
+ /**
+ * The altitude (in meters) based on the reference in TAG_GPS_ALTITUDE_REF.
+ * Type is rational.
+ */
+ public static final String TAG_GPS_ALTITUDE = "GPSAltitude";
+
+ /**
+ * 0 if the altitude is above sea level. 1 if the altitude is below sea
+ * level. Type is int.
+ */
+ public static final String TAG_GPS_ALTITUDE_REF = "GPSAltitudeRef";
+
/** Type is String. */
public static final String TAG_GPS_TIMESTAMP = "GPSTimeStamp";
/** Type is String. */
@@ -289,6 +302,23 @@ public class ExifInterface {
}
/**
+ * Return the altitude in meters. If the exif tag does not exist, return
+ * <var>defaultValue</var>.
+ *
+ * @param defaultValue the value to return if the tag is not available.
+ */
+ public double getAltitude(double defaultValue) {
+ double altitude = getAttributeDouble(TAG_GPS_ALTITUDE, -1);
+ int ref = getAttributeInt(TAG_GPS_ALTITUDE_REF, -1);
+
+ if (altitude >= 0 && ref >= 0) {
+ return (double) (altitude * ((ref == 1) ? -1 : 1));
+ } else {
+ return defaultValue;
+ }
+ }
+
+ /**
* Returns number of milliseconds since Jan. 1, 1970, midnight.
* Returns -1 if the date time information if not available.
* @hide
@@ -345,14 +375,14 @@ public class ExifInterface {
/ Float.parseFloat(pair[1].trim())));
pair = parts[2].split("/");
- float seconds = Float.parseFloat(pair[0].trim())
- / Float.parseFloat(pair[1].trim());
+ double seconds = Double.parseDouble(pair[0].trim())
+ / Double.parseDouble(pair[1].trim());
- float result = degrees + (minutes / 60F) + (seconds / (60F * 60F));
+ double result = degrees + (minutes / 60.0) + (seconds / 3600.0);
if ((ref.equals("S") || ref.equals("W"))) {
- return -result;
+ return (float) -result;
}
- return result;
+ return (float) result;
} catch (RuntimeException ex) {
// if for whatever reason we can't parse the lat long then return
// null
diff --git a/media/java/android/media/MediaFile.java b/media/java/android/media/MediaFile.java
index 9d1d420..f1da72f 100644
--- a/media/java/android/media/MediaFile.java
+++ b/media/java/android/media/MediaFile.java
@@ -46,8 +46,9 @@ public class MediaFile {
public static final int FILE_TYPE_WMA = 6;
public static final int FILE_TYPE_OGG = 7;
public static final int FILE_TYPE_AAC = 8;
+ public static final int FILE_TYPE_MKA = 9;
private static final int FIRST_AUDIO_FILE_TYPE = FILE_TYPE_MP3;
- private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_AAC;
+ private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_MKA;
// MIDI file types
public static final int FILE_TYPE_MID = 11;
@@ -63,8 +64,9 @@ public class MediaFile {
public static final int FILE_TYPE_3GPP2 = 24;
public static final int FILE_TYPE_WMV = 25;
public static final int FILE_TYPE_ASF = 26;
+ public static final int FILE_TYPE_MKV = 27;
private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4;
- private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_ASF;
+ private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_MKV;
// Image file types
public static final int FILE_TYPE_JPEG = 31;
@@ -134,6 +136,7 @@ public class MediaFile {
addFileType("OGG", FILE_TYPE_OGG, "application/ogg");
addFileType("OGA", FILE_TYPE_OGG, "application/ogg");
addFileType("AAC", FILE_TYPE_AAC, "audio/aac");
+ addFileType("MKA", FILE_TYPE_MKA, "audio/x-matroska");
addFileType("MID", FILE_TYPE_MID, "audio/midi");
addFileType("MIDI", FILE_TYPE_MID, "audio/midi");
@@ -151,6 +154,8 @@ public class MediaFile {
addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp");
addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2");
addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2");
+ addFileType("MKV", FILE_TYPE_MKV, "video/x-matroska");
+ addFileType("WEBM", FILE_TYPE_MKV, "video/x-matroska");
if (isWMVEnabled()) {
addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv");
addFileType("ASF", FILE_TYPE_ASF, "video/x-ms-asf");