Chromium Code Reviews| 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); |
| } |