summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Robert Shih <robertshih@google.com> 2018-03-05 23:14:50 -0800
committer Robert Shih <robertshih@google.com> 2018-03-06 18:18:52 -0800
commit3164cbd536b13a803ca2944ff3d64c8e2c96e769 (patch)
tree89cea63f02fb781dc5f503db3526cf8c40fbabdd
parent88840820d0ccf17ac1af2bc89f14c82b0b2e04bb (diff)
MediaPlayer2: embed header in uri
Bug: 63934228 Change-Id: I3eba4a0ee8e8e784f6dcf79c739a756e957025c9
-rw-r--r--media/java/android/media/MediaPlayer2.java42
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
*/