| Index: media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
|
| ===================================================================
|
| --- media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (revision 189965)
|
| +++ media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (working copy)
|
| @@ -4,7 +4,10 @@
|
|
|
| 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 org.chromium.base.CalledByNative;
|
| @@ -12,12 +15,54 @@
|
|
|
| @JNINamespace("media")
|
| class AudioManagerAndroid {
|
| + private static final String TAG = AudioManagerAndroid.class.getSimpleName();
|
| +
|
| + private final AudioManager mAudioManager;
|
| + private final Context mContext;
|
| +
|
| + private BroadcastReceiver mReceiver;
|
| + private boolean mOriginalSpeakerStatus;
|
| +
|
| @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) {
|
| + mAudioManager.setMode(mode);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private static AudioManagerAndroid createAudioManagerAndroid(Context context) {
|
| + return new AudioManagerAndroid(context);
|
| + }
|
| +
|
| + private AudioManagerAndroid(Context context) {
|
| + mContext = context;
|
| + mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
|
| + }
|
| +
|
| + @CalledByNative
|
| + public void registerHeadsetReceiver() {
|
| + if (mReceiver != null) {
|
| + return;
|
| }
|
| +
|
| + mOriginalSpeakerStatus = mAudioManager.isSpeakerphoneOn();
|
| + IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
|
| +
|
| + mReceiver = new BroadcastReceiver() {
|
| + @Override
|
| + public void onReceive(Context context, Intent intent) {
|
| + if (Intent.ACTION_HEADSET_PLUG.equals(intent.getAction())) {
|
| + mAudioManager.setSpeakerphoneOn(
|
| + intent.getIntExtra("state", 0) == 0);
|
| + }
|
| + }
|
| + };
|
| + mContext.registerReceiver(mReceiver, filter);
|
| }
|
| +
|
| + @CalledByNative
|
| + public void unregisterHeadsetReceiver() {
|
| + mContext.unregisterReceiver(mReceiver);
|
| + mReceiver = null;
|
| + mAudioManager.setSpeakerphoneOn(mOriginalSpeakerStatus);
|
| + }
|
| }
|
|
|