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

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

Issue 11348199: Free (and pause) audio resources when getting a phone call (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@input_color
Patch Set: Created 8 years, 1 month 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/MediaPlayerListener.java
diff --git a/media/base/android/java/src/org/chromium/media/MediaPlayerListener.java b/media/base/android/java/src/org/chromium/media/MediaPlayerListener.java
index 043dfb92ea2f91f368eb1a3de432c6b5280268ae..c8a926a080121b36aa3547a88c16d7b27bf2893e 100644
--- a/media/base/android/java/src/org/chromium/media/MediaPlayerListener.java
+++ b/media/base/android/java/src/org/chromium/media/MediaPlayerListener.java
@@ -4,10 +4,12 @@
package org.chromium.media;
+import android.Manifest.permission;
import android.content.Context;
import android.content.pm.PackageManager;
-import android.Manifest.permission;
import android.media.MediaPlayer;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
@@ -15,7 +17,7 @@ import org.chromium.base.JNINamespace;
// This class implements all the listener interface for android mediaplayer.
// Callbacks will be sent to the native class for processing.
@JNINamespace("media")
-class MediaPlayerListener implements MediaPlayer.OnPreparedListener,
+class MediaPlayerListener extends PhoneStateListener implements MediaPlayer.OnPreparedListener,
MediaPlayer.OnCompletionListener,
qinmin 2012/11/23 23:46:38 move these lines to align with the previous line
Miguel Garcia 2012/11/26 10:37:51 Moved them to 4 space indent, I think this is more
MediaPlayer.OnBufferingUpdateListener,
MediaPlayer.OnSeekCompleteListener,
@@ -34,9 +36,11 @@ class MediaPlayerListener implements MediaPlayer.OnPreparedListener,
// Used to determine the class instance to dispatch the native call to.
private int mNativeMediaPlayerListener = 0;
+ private final Context mContext;
- private MediaPlayerListener(int nativeMediaPlayerListener) {
+ private MediaPlayerListener(int nativeMediaPlayerListener, Context context) {
mNativeMediaPlayerListener = nativeMediaPlayerListener;
+ mContext = context;
}
@Override
@@ -99,10 +103,29 @@ class MediaPlayerListener implements MediaPlayer.OnPreparedListener,
nativeOnMediaPrepared(mNativeMediaPlayerListener);
}
+ @Override
+ public void onCallStateChanged(int type, String number) {
+ if (type != TelephonyManager.CALL_STATE_IDLE) {
+ nativeOnMediaInterrupted(mNativeMediaPlayerListener);
+ }
+ }
+
@CalledByNative
- private static void create(int nativeMediaPlayerListener,
+ public void releaseResources() {
+ // Unregister the listener
+ if (mContext != null) {
+ TelephonyManager mgr =
+ (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
qinmin 2012/11/23 23:46:38 fix indent, 8 chars instead of 4
Miguel Garcia 2012/11/26 10:37:51 Done.
+ if (mgr != null) {
+ mgr.listen(this, PhoneStateListener.LISTEN_NONE);
+ }
+ }
+ }
+
+ @CalledByNative
+ private static MediaPlayerListener create(int nativeMediaPlayerListener,
Context context, MediaPlayer mediaPlayer) {
- MediaPlayerListener listener = new MediaPlayerListener(nativeMediaPlayerListener);
+ MediaPlayerListener listener = new MediaPlayerListener(nativeMediaPlayerListener, context);
mediaPlayer.setOnBufferingUpdateListener(listener);
mediaPlayer.setOnCompletionListener(listener);
mediaPlayer.setOnErrorListener(listener);
@@ -113,6 +136,13 @@ class MediaPlayerListener implements MediaPlayer.OnPreparedListener,
context.checkCallingPermission(permission.WAKE_LOCK)) {
mediaPlayer.setWakeMode(context, android.os.PowerManager.FULL_WAKE_LOCK);
}
+
+ TelephonyManager mgr =
+ (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
qinmin 2012/11/23 23:46:38 fix indent
Miguel Garcia 2012/11/26 10:37:51 Done.
+ if (mgr != null) {
+ mgr.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
qinmin 2012/11/23 23:46:38 indent is 4
Miguel Garcia 2012/11/26 10:37:51 Done.
+ }
+ return listener;
}
/**
@@ -135,4 +165,6 @@ class MediaPlayerListener implements MediaPlayer.OnPreparedListener,
private native void nativeOnPlaybackComplete(int nativeMediaPlayerListener);
private native void nativeOnSeekComplete(int nativeMediaPlayerListener);
+
+ private native void nativeOnMediaInterrupted(int nativeMediaPlayerListener);
}

Powered by Google App Engine
This is Rietveld 408576698