From 1c56a67dbbade39b1d88738a49fd31b4f97df0ab Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Thu, 15 Aug 2013 12:05:52 -0700 Subject: [PATCH] MediaPlayer.TrackInfo: add getFormat() method This returns the MediaFormat of the track or null (for now). Change-Id: Ib88fc229b661942b2ed136204fdc43da427d7aed Signed-off-by: Lajos Molnar Bug: 10326117 --- api/current.txt | 1 + media/java/android/media/MediaPlayer.java | 30 ++++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/api/current.txt b/api/current.txt index a1b95ac41d69..3ec54dcf9149 100644 --- a/api/current.txt +++ b/api/current.txt @@ -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); diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index 241c7fac8651..72062447e31a 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -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()); } /** -- 2.11.0