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 |