OSDN Git Service

MediaPlayer.TrackInfo: add getFormat() method
authorLajos Molnar <lajos@google.com>
Thu, 15 Aug 2013 19:05:52 +0000 (12:05 -0700)
committerLajos Molnar <lajos@google.com>
Thu, 15 Aug 2013 19:35:14 +0000 (12:35 -0700)
This returns the MediaFormat of the track or null (for now).

Change-Id: Ib88fc229b661942b2ed136204fdc43da427d7aed
Signed-off-by: Lajos Molnar <lajos@google.com>
Bug: 10326117

api/current.txt
media/java/android/media/MediaPlayer.java

index a1b95ac..3ec54dc 100644 (file)
@@ -12567,6 +12567,7 @@ package android.media {
 
   public static class MediaPlayer.TrackInfo implements android.os.Parcelable {
     method public int describeContents();
+    method public android.media.MediaFormat getFormat();
     method public java.lang.String getLanguage();
     method public int getTrackType();
     method public void writeToParcel(android.os.Parcel, int);
index 241c7fa..7206244 100644 (file)
@@ -38,6 +38,7 @@ import android.view.SurfaceHolder;
 import android.graphics.Bitmap;
 import android.graphics.SurfaceTexture;
 import android.media.AudioManager;
+import android.media.MediaFormat;
 
 import java.io.File;
 import java.io.FileDescriptor;
@@ -1526,7 +1527,19 @@ public class MediaPlayer
          * ISO-639-2 language code, "und", is returned.
          */
         public String getLanguage() {
-            return mLanguage;
+            String language = mFormat.getString(MediaFormat.KEY_LANGUAGE);
+            return language == null ? "und" : language;
+        }
+
+        /**
+         * Gets the {@link MediaFormat} of the track.  If the format is
+         * unknown or could not be determined, null is returned.
+         */
+        public MediaFormat getFormat() {
+            if (mTrackType == MEDIA_TRACK_TYPE_TIMEDTEXT) {
+                return mFormat;
+            }
+            return null;
         }
 
         public static final int MEDIA_TRACK_TYPE_UNKNOWN = 0;
@@ -1535,11 +1548,20 @@ public class MediaPlayer
         public static final int MEDIA_TRACK_TYPE_TIMEDTEXT = 3;
 
         final int mTrackType;
-        final String mLanguage;
+        final MediaFormat mFormat;
 
         TrackInfo(Parcel in) {
             mTrackType = in.readInt();
-            mLanguage = in.readString();
+            // TODO: parcel in the full MediaFormat
+            String language = in.readString();
+
+            if (mTrackType == MEDIA_TRACK_TYPE_TIMEDTEXT) {
+                mFormat = MediaFormat.createSubtitleFormat(
+                    MEDIA_MIMETYPE_TEXT_SUBRIP, language);
+            } else {
+                mFormat = new MediaFormat();
+                mFormat.setString(MediaFormat.KEY_LANGUAGE, language);
+            }
         }
 
         /**
@@ -1556,7 +1578,7 @@ public class MediaPlayer
         @Override
         public void writeToParcel(Parcel dest, int flags) {
             dest.writeInt(mTrackType);
-            dest.writeString(mLanguage);
+            dest.writeString(getLanguage());
         }
 
         /**