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); |
} |