Index: media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java |
=================================================================== |
--- media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (revision 189667) |
+++ media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (working copy) |
@@ -4,20 +4,87 @@ |
package org.chromium.media; |
+import android.content.BroadcastReceiver; |
import android.content.Context; |
+import android.content.Intent; |
+import android.content.IntentFilter; |
import android.media.AudioManager; |
+import android.telephony.TelephonyManager; |
nilesh
2013/03/22 00:43:27
Remove unused imports
leozwang1
2013/03/22 01:33:13
Done.
nilesh
2013/03/22 01:43:43
remove android.util.Log too
leozwang1
2013/03/22 01:50:07
Done.
|
+import android.util.Log; |
import org.chromium.base.CalledByNative; |
import org.chromium.base.JNINamespace; |
@JNINamespace("media") |
class AudioManagerAndroid { |
+ private static final String TAG = AudioManagerAndroid.class.getSimpleName(); |
+ |
+ private BroadcastReceiver mReceiver; |
+ private Context mContext; |
nilesh
2013/03/22 00:43:27
this can be final now.
Also group final and non-fi
leozwang1
2013/03/22 01:33:13
Done.
|
+ |
+ private boolean mOriginalSpeakerStatus; |
+ |
+ private static final int STATE_UNPLUGGED = 0; |
Ami GONE FROM CHROMIUM
2013/03/21 23:52:58
nit
My point in an earlier comment was:
Why aren'
leozwang1
2013/03/22 01:33:13
Done.
|
+ private static final int STATE_PLUGGED = 1; |
+ |
@CalledByNative |
- public static void setMode(Context context, int mode) { |
- AudioManager audioManager = |
- (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); |
- if (null != audioManager) { |
- audioManager.setMode(mode); |
+ public void setMode(int mode) { |
+ AudioManager audioManager = getAudioManager(); |
+ audioManager.setMode(mode); |
Ami GONE FROM CHROMIUM
2013/03/21 23:52:58
nit
You sure do like temporary variables :)
getAud
leozwang1
2013/03/22 01:33:13
Done.
leozwang1
2013/03/22 01:33:13
Done.
|
+ } |
+ |
+ @CalledByNative |
+ private static AudioManagerAndroid createAudioManagerAndroid(Context context) { |
+ return new AudioManagerAndroid(context); |
+ } |
+ |
+ private AudioManagerAndroid(Context context) { |
+ mContext = context; |
+ } |
+ |
+ @CalledByNative |
+ public void registerHeadsetReceiver() { |
+ if (mReceiver != null) { |
+ return; |
} |
+ final AudioManager audioManager = getAudioManager(); |
+ |
+ mOriginalSpeakerStatus = audioManager.isSpeakerphoneOn(); |
+ |
+ IntentFilter filter = new IntentFilter(); |
+ filter.addAction(Intent.ACTION_HEADSET_PLUG); |
Ami GONE FROM CHROMIUM
2013/03/21 23:52:58
Do these two lines have an effect different to:
ne
leozwang1
2013/03/22 01:33:13
Done.
leozwang1
2013/03/22 01:33:13
Done.
|
+ |
+ mReceiver = new BroadcastReceiver() { |
+ @Override |
+ public void onReceive(Context context, Intent intent) { |
+ if (Intent.ACTION_HEADSET_PLUG.equals(intent.getAction())) { |
+ int state = intent.getIntExtra("state", STATE_UNPLUGGED); |
+ // state 0 for unplugged, 1 for plugged. |
Ami GONE FROM CHROMIUM
2013/03/21 23:52:58
comment is silly now?
leozwang1
2013/03/22 01:33:13
Done.
leozwang1
2013/03/22 01:33:13
Done.
|
+ switch (state) { |
+ case STATE_UNPLUGGED: |
+ audioManager.setSpeakerphoneOn(true); |
+ break; |
+ case STATE_PLUGGED: |
+ audioManager.setSpeakerphoneOn(false); |
+ break; |
+ } |
+ } |
+ } |
+ }; |
+ mContext.registerReceiver(mReceiver, filter); |
} |
+ |
+ @CalledByNative |
+ public void unregisterHeadsetReceiver() { |
+ mContext.unregisterReceiver(mReceiver); |
+ mReceiver = null; |
+ |
+ AudioManager audioManager = getAudioManager(); |
+ audioManager.setSpeakerphoneOn(mOriginalSpeakerStatus); |
Ami GONE FROM CHROMIUM
2013/03/21 23:52:58
Since you seem to be saying that getAudioManager()
leozwang1
2013/03/22 01:33:13
Done.
|
+ } |
+ |
+ private AudioManager getAudioManager() { |
+ return (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE); |
+ } |
+ |
} |