Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.media; | 5 package org.chromium.media; |
| 6 | 6 |
| 7 import android.Manifest.permission; | |
| 7 import android.content.Context; | 8 import android.content.Context; |
| 8 import android.content.pm.PackageManager; | 9 import android.content.pm.PackageManager; |
| 9 import android.Manifest.permission; | |
| 10 import android.media.MediaPlayer; | 10 import android.media.MediaPlayer; |
| 11 import android.telephony.PhoneStateListener; | |
| 12 import android.telephony.TelephonyManager; | |
| 11 | 13 |
| 12 import org.chromium.base.CalledByNative; | 14 import org.chromium.base.CalledByNative; |
| 13 import org.chromium.base.JNINamespace; | 15 import org.chromium.base.JNINamespace; |
| 14 | 16 |
| 15 // This class implements all the listener interface for android mediaplayer. | 17 // This class implements all the listener interface for android mediaplayer. |
| 16 // Callbacks will be sent to the native class for processing. | 18 // Callbacks will be sent to the native class for processing. |
| 17 @JNINamespace("media") | 19 @JNINamespace("media") |
| 18 class MediaPlayerListener implements MediaPlayer.OnPreparedListener, | 20 class MediaPlayerListener extends PhoneStateListener implements MediaPlayer.OnPr eparedListener, |
| 19 MediaPlayer.OnCompletionListener, | 21 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
| |
| 20 MediaPlayer.OnBufferingUpdateListener, | 22 MediaPlayer.OnBufferingUpdateListener, |
| 21 MediaPlayer.OnSeekCompleteListener, | 23 MediaPlayer.OnSeekCompleteListener, |
| 22 MediaPlayer.OnVideoSizeChangedListener, | 24 MediaPlayer.OnVideoSizeChangedListener, |
| 23 MediaPlayer.OnErrorListener { | 25 MediaPlayer.OnErrorListener { |
| 24 // These values are mirrored as enums in media/base/android/media_player_bri dge.h. | 26 // These values are mirrored as enums in media/base/android/media_player_bri dge.h. |
| 25 // Please ensure they stay in sync. | 27 // Please ensure they stay in sync. |
| 26 private static final int MEDIA_ERROR_FORMAT = 0; | 28 private static final int MEDIA_ERROR_FORMAT = 0; |
| 27 private static final int MEDIA_ERROR_DECODE = 1; | 29 private static final int MEDIA_ERROR_DECODE = 1; |
| 28 private static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 2; | 30 private static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 2; |
| 29 private static final int MEDIA_ERROR_INVALID_CODE = 3; | 31 private static final int MEDIA_ERROR_INVALID_CODE = 3; |
| 30 | 32 |
| 31 // These values are copied from android media player. | 33 // These values are copied from android media player. |
| 32 public static final int MEDIA_ERROR_MALFORMED = -1007; | 34 public static final int MEDIA_ERROR_MALFORMED = -1007; |
| 33 public static final int MEDIA_ERROR_TIMED_OUT = -110; | 35 public static final int MEDIA_ERROR_TIMED_OUT = -110; |
| 34 | 36 |
| 35 // Used to determine the class instance to dispatch the native call to. | 37 // Used to determine the class instance to dispatch the native call to. |
| 36 private int mNativeMediaPlayerListener = 0; | 38 private int mNativeMediaPlayerListener = 0; |
| 39 private final Context mContext; | |
| 37 | 40 |
| 38 private MediaPlayerListener(int nativeMediaPlayerListener) { | 41 private MediaPlayerListener(int nativeMediaPlayerListener, Context context) { |
| 39 mNativeMediaPlayerListener = nativeMediaPlayerListener; | 42 mNativeMediaPlayerListener = nativeMediaPlayerListener; |
| 43 mContext = context; | |
| 40 } | 44 } |
| 41 | 45 |
| 42 @Override | 46 @Override |
| 43 public boolean onError(MediaPlayer mp, int what, int extra) { | 47 public boolean onError(MediaPlayer mp, int what, int extra) { |
| 44 int errorType; | 48 int errorType; |
| 45 switch (what) { | 49 switch (what) { |
| 46 case MediaPlayer.MEDIA_ERROR_UNKNOWN: | 50 case MediaPlayer.MEDIA_ERROR_UNKNOWN: |
| 47 switch (extra) { | 51 switch (extra) { |
| 48 case MEDIA_ERROR_MALFORMED: | 52 case MEDIA_ERROR_MALFORMED: |
| 49 errorType = MEDIA_ERROR_DECODE; | 53 errorType = MEDIA_ERROR_DECODE; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 92 @Override | 96 @Override |
| 93 public void onCompletion(MediaPlayer mp) { | 97 public void onCompletion(MediaPlayer mp) { |
| 94 nativeOnPlaybackComplete(mNativeMediaPlayerListener); | 98 nativeOnPlaybackComplete(mNativeMediaPlayerListener); |
| 95 } | 99 } |
| 96 | 100 |
| 97 @Override | 101 @Override |
| 98 public void onPrepared(MediaPlayer mp) { | 102 public void onPrepared(MediaPlayer mp) { |
| 99 nativeOnMediaPrepared(mNativeMediaPlayerListener); | 103 nativeOnMediaPrepared(mNativeMediaPlayerListener); |
| 100 } | 104 } |
| 101 | 105 |
| 106 @Override | |
| 107 public void onCallStateChanged(int type, String number) { | |
| 108 if (type != TelephonyManager.CALL_STATE_IDLE) { | |
| 109 nativeOnMediaInterrupted(mNativeMediaPlayerListener); | |
| 110 } | |
| 111 } | |
| 112 | |
| 102 @CalledByNative | 113 @CalledByNative |
| 103 private static void create(int nativeMediaPlayerListener, | 114 public void releaseResources() { |
| 115 // Unregister the listener | |
| 116 if (mContext != null) { | |
| 117 TelephonyManager mgr = | |
| 118 (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_S ERVICE); | |
|
qinmin
2012/11/23 23:46:38
fix indent, 8 chars instead of 4
Miguel Garcia
2012/11/26 10:37:51
Done.
| |
| 119 if (mgr != null) { | |
| 120 mgr.listen(this, PhoneStateListener.LISTEN_NONE); | |
| 121 } | |
| 122 } | |
| 123 } | |
| 124 | |
| 125 @CalledByNative | |
| 126 private static MediaPlayerListener create(int nativeMediaPlayerListener, | |
| 104 Context context, MediaPlayer mediaPlayer) { | 127 Context context, MediaPlayer mediaPlayer) { |
| 105 MediaPlayerListener listener = new MediaPlayerListener(nativeMediaPlayer Listener); | 128 MediaPlayerListener listener = new MediaPlayerListener(nativeMediaPlayer Listener, context); |
| 106 mediaPlayer.setOnBufferingUpdateListener(listener); | 129 mediaPlayer.setOnBufferingUpdateListener(listener); |
| 107 mediaPlayer.setOnCompletionListener(listener); | 130 mediaPlayer.setOnCompletionListener(listener); |
| 108 mediaPlayer.setOnErrorListener(listener); | 131 mediaPlayer.setOnErrorListener(listener); |
| 109 mediaPlayer.setOnPreparedListener(listener); | 132 mediaPlayer.setOnPreparedListener(listener); |
| 110 mediaPlayer.setOnSeekCompleteListener(listener); | 133 mediaPlayer.setOnSeekCompleteListener(listener); |
| 111 mediaPlayer.setOnVideoSizeChangedListener(listener); | 134 mediaPlayer.setOnVideoSizeChangedListener(listener); |
| 112 if (PackageManager.PERMISSION_GRANTED == | 135 if (PackageManager.PERMISSION_GRANTED == |
| 113 context.checkCallingPermission(permission.WAKE_LOCK)) { | 136 context.checkCallingPermission(permission.WAKE_LOCK)) { |
| 114 mediaPlayer.setWakeMode(context, android.os.PowerManager.FULL_WAKE_L OCK); | 137 mediaPlayer.setWakeMode(context, android.os.PowerManager.FULL_WAKE_L OCK); |
| 115 } | 138 } |
| 139 | |
| 140 TelephonyManager mgr = | |
| 141 (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVIC E); | |
|
qinmin
2012/11/23 23:46:38
fix indent
Miguel Garcia
2012/11/26 10:37:51
Done.
| |
| 142 if (mgr != null) { | |
| 143 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.
| |
| 144 } | |
| 145 return listener; | |
| 116 } | 146 } |
| 117 | 147 |
| 118 /** | 148 /** |
| 119 * See media/base/android/media_player_listener.cc for all the following fun ctions. | 149 * See media/base/android/media_player_listener.cc for all the following fun ctions. |
| 120 */ | 150 */ |
| 121 private native void nativeOnMediaError( | 151 private native void nativeOnMediaError( |
| 122 int nativeMediaPlayerListener, | 152 int nativeMediaPlayerListener, |
| 123 int errorType); | 153 int errorType); |
| 124 | 154 |
| 125 private native void nativeOnVideoSizeChanged( | 155 private native void nativeOnVideoSizeChanged( |
| 126 int nativeMediaPlayerListener, | 156 int nativeMediaPlayerListener, |
| 127 int width, int height); | 157 int width, int height); |
| 128 | 158 |
| 129 private native void nativeOnBufferingUpdate( | 159 private native void nativeOnBufferingUpdate( |
| 130 int nativeMediaPlayerListener, | 160 int nativeMediaPlayerListener, |
| 131 int percent); | 161 int percent); |
| 132 | 162 |
| 133 private native void nativeOnMediaPrepared(int nativeMediaPlayerListener); | 163 private native void nativeOnMediaPrepared(int nativeMediaPlayerListener); |
| 134 | 164 |
| 135 private native void nativeOnPlaybackComplete(int nativeMediaPlayerListener); | 165 private native void nativeOnPlaybackComplete(int nativeMediaPlayerListener); |
| 136 | 166 |
| 137 private native void nativeOnSeekComplete(int nativeMediaPlayerListener); | 167 private native void nativeOnSeekComplete(int nativeMediaPlayerListener); |
| 168 | |
| 169 private native void nativeOnMediaInterrupted(int nativeMediaPlayerListener); | |
| 138 } | 170 } |
| OLD | NEW |