diff options
| author | 2018-03-05 23:14:50 -0800 | |
|---|---|---|
| committer | 2018-03-06 18:18:52 -0800 | |
| commit | 3164cbd536b13a803ca2944ff3d64c8e2c96e769 (patch) | |
| tree | 89cea63f02fb781dc5f503db3526cf8c40fbabdd | |
| parent | 88840820d0ccf17ac1af2bc89f14c82b0b2e04bb (diff) | |
MediaPlayer2: embed header in uri
Bug: 63934228
Change-Id: I3eba4a0ee8e8e784f6dcf79c739a756e957025c9
| -rw-r--r-- | media/java/android/media/MediaPlayer2.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/media/java/android/media/MediaPlayer2.java b/media/java/android/media/MediaPlayer2.java index f73c38eb9fb0..08defbbe6697 100644 --- a/media/java/android/media/MediaPlayer2.java +++ b/media/java/android/media/MediaPlayer2.java @@ -34,6 +34,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; @@ -463,6 +464,47 @@ public abstract class MediaPlayer2 extends MediaPlayerBase return new MediaPlayer2Impl(); } + private static final String[] decodeMediaPlayer2Uri(String location) { + Uri uri = Uri.parse(location); + if (!"mediaplayer2".equals(uri.getScheme())) { + return new String[] {location}; + } + + List<String> uris = uri.getQueryParameters("uri"); + if (uris.isEmpty()) { + return new String[] {location}; + } + + List<String> keys = uri.getQueryParameters("key"); + List<String> values = uri.getQueryParameters("value"); + if (keys.size() != values.size()) { + return new String[] {uris.get(0)}; + } + + List<String> ls = new ArrayList(); + ls.add(uris.get(0)); + for (int i = 0; i < keys.size() ; i++) { + ls.add(keys.get(i)); + ls.add(values.get(i)); + } + + return ls.toArray(new String[ls.size()]); + } + + private static final String encodeMediaPlayer2Uri(String uri, String[] keys, String[] values) { + Uri.Builder builder = new Uri.Builder(); + builder.scheme("mediaplayer2").path("/").appendQueryParameter("uri", uri); + if (keys == null || values == null || keys.length != values.length) { + return builder.build().toString(); + } + for (int i = 0; i < keys.length ; i++) { + builder + .appendQueryParameter("key", keys[i]) + .appendQueryParameter("value", values[i]); + } + return builder.build().toString(); + } + /** * @hide */ |