Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(795)

Unified Diff: media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java

Issue 12625005: remove call to get android MediaPlayer class (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove useless . line Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java
diff --git a/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java b/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java
index 1bf800585ae85de7015d52b73ec06a4f44ace56e..902f8e59c8e490a96c49629fe9949b75e2444129 100644
--- a/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java
@@ -8,10 +8,12 @@ import android.content.Context;
import android.media.MediaPlayer;
import android.net.Uri;
import android.text.TextUtils;
+import android.util.Log;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
+import java.lang.reflect.Method;
import java.util.HashMap;
@JNINamespace("media")
@@ -32,4 +34,43 @@ class MediaPlayerBridge {
return false;
}
}
+
+ /**
+ * Returns an array of booleans for allowed operations on the media player.
+ * The first boolean shows whether the player can be paused.
+ * The 2nd boolean shows whether the player can seek forward.
+ * The 3rd boolean shows whether the player can seek backward.
bulach 2013/03/13 15:06:10 the knowledge of which boolean is what is now dist
qinmin 2013/03/13 18:26:58 Done.
+ */
+ @CalledByNative
+ private static boolean[] getMetadata(MediaPlayer player) {
+ boolean ret[] = { true, true, true };
+ try {
+ Method getMetadata = player.getClass().getDeclaredMethod(
+ "getMetadata", boolean.class, boolean.class);
+ getMetadata.setAccessible(true);
+ Object data = getMetadata.invoke(player, false, false);
+ if (data != null) {
+ Class<?> metadataClass = data.getClass();
+ Method hasMethod = metadataClass.getDeclaredMethod("has", int.class);
+ Method getBooleanMethod = metadataClass.getDeclaredMethod("getBoolean", int.class);
+
+ int pause = (Integer) metadataClass.getField("PAUSE_AVAILABLE").get(null);
+ int seekForward =
+ (Integer) metadataClass.getField("SEEK_FORWARD_AVAILABLE").get(null);
+ int seekBackward =
+ (Integer) metadataClass.getField("SEEK_BACKWARD_AVAILABLE").get(null);
+ hasMethod.setAccessible(true);
+ getBooleanMethod.setAccessible(true);
+ ret[0] = !((Boolean) hasMethod.invoke(data, pause))
+ || ((Boolean) getBooleanMethod.invoke(data, pause));
+ ret[1] = !((Boolean) hasMethod.invoke(data, seekForward))
+ || ((Boolean) getBooleanMethod.invoke(data, seekForward));
+ ret[2] = !((Boolean) hasMethod.invoke(data, seekBackward))
+ || ((Boolean) getBooleanMethod.invoke(data, seekBackward));
+ }
+ } catch (Exception e) {
+ Log.e("MediaPlayerBridge", "Cannot get metadata from the player: " + e);
+ }
+ return ret;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698