diff options
author | Eric Laurent <elaurent@google.com> | 2009-11-12 22:49:51 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2009-11-12 22:49:51 -0800 |
commit | e8302a64c7fb2e12bd04ac70114682c3a1260d03 (patch) | |
tree | deda93cfee3b09e28c7fbd2e0de76fd479c819da /media/java | |
parent | 2058977493230bec659e94756b1220b80fa7874a (diff) | |
parent | 1aa9f3cac31a7c2b50fcb3c9259cead8d638ae54 (diff) | |
download | frameworks_base-e8302a64c7fb2e12bd04ac70114682c3a1260d03.zip frameworks_base-e8302a64c7fb2e12bd04ac70114682c3a1260d03.tar.gz frameworks_base-e8302a64c7fb2e12bd04ac70114682c3a1260d03.tar.bz2 |
am 1aa9f3ca: Merge change I923d7d72 into eclair
Merge commit '1aa9f3cac31a7c2b50fcb3c9259cead8d638ae54' into eclair-plus-aosp
* commit '1aa9f3cac31a7c2b50fcb3c9259cead8d638ae54':
Fix issue 2242614: Wired headset not recognized: bogus "state" in ACTION_HEADSET_PLUG broadcast.
Diffstat (limited to 'media/java')
-rw-r--r-- | media/java/android/media/AudioService.java | 103 | ||||
-rw-r--r-- | media/java/android/media/AudioSystem.java | 3 |
2 files changed, 28 insertions, 78 deletions
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 58a0bba..3b40612 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -222,15 +222,6 @@ public class AudioService extends IAudioService.Stub { // Broadcast receiver for device connections intent broadcasts private final BroadcastReceiver mReceiver = new AudioServiceBroadcastReceiver(); - //TODO: use common definitions with HeadsetObserver - private static final int BIT_HEADSET = (1 << 0); - private static final int BIT_HEADSET_NO_MIC = (1 << 1); - private static final int BIT_TTY = (1 << 2); - private static final int BIT_FM_HEADSET = (1 << 3); - private static final int BIT_FM_SPEAKER = (1 << 4); - - private int mHeadsetState; - // Devices currently connected private HashMap <Integer, String> mConnectedDevices = new HashMap <Integer, String>(); @@ -254,7 +245,6 @@ public class AudioService extends IAudioService.Stub { mVolumePanel = new VolumePanel(context, this); mSettingsObserver = new SettingsObserver(); mMode = AudioSystem.MODE_NORMAL; - mHeadsetState = 0; mForcedUseForComm = AudioSystem.FORCE_NONE; createAudioSystemThread(); readPersistedSettings(); @@ -1460,72 +1450,35 @@ public class AudioService extends IAudioService.Stub { } } else if (action.equals(Intent.ACTION_HEADSET_PLUG)) { int state = intent.getIntExtra("state", 0); - if ((state & BIT_HEADSET) == 0 && - (mHeadsetState & BIT_HEADSET) != 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADSET, - AudioSystem.DEVICE_STATE_UNAVAILABLE, - ""); - mConnectedDevices.remove(AudioSystem.DEVICE_OUT_WIRED_HEADSET); - } else if ((state & BIT_HEADSET) != 0 && - (mHeadsetState & BIT_HEADSET) == 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADSET, - AudioSystem.DEVICE_STATE_AVAILABLE, - ""); - mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADSET), ""); - } - if ((state & BIT_HEADSET_NO_MIC) == 0 && - (mHeadsetState & BIT_HEADSET_NO_MIC) != 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE, - AudioSystem.DEVICE_STATE_UNAVAILABLE, - ""); - mConnectedDevices.remove(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE); - } else if ((state & BIT_HEADSET_NO_MIC) != 0 && - (mHeadsetState & BIT_HEADSET_NO_MIC) == 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE, - AudioSystem.DEVICE_STATE_AVAILABLE, - ""); - mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE), ""); - } - if ((state & BIT_TTY) == 0 && - (mHeadsetState & BIT_TTY) != 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_TTY, - AudioSystem.DEVICE_STATE_UNAVAILABLE, - ""); - mConnectedDevices.remove(AudioSystem.DEVICE_OUT_TTY); - } else if ((state & BIT_TTY) != 0 && - (mHeadsetState & BIT_TTY) == 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_TTY, - AudioSystem.DEVICE_STATE_AVAILABLE, - ""); - mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_TTY), ""); - } - if ((state & BIT_FM_HEADSET) == 0 && - (mHeadsetState & BIT_FM_HEADSET) != 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_FM_HEADPHONE, - AudioSystem.DEVICE_STATE_UNAVAILABLE, - ""); - mConnectedDevices.remove(AudioSystem.DEVICE_OUT_FM_HEADPHONE); - } else if ((state & BIT_FM_HEADSET) != 0 && - (mHeadsetState & BIT_FM_HEADSET) == 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_FM_HEADPHONE, - AudioSystem.DEVICE_STATE_AVAILABLE, - ""); - mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_FM_HEADPHONE), ""); - } - if ((state & BIT_FM_SPEAKER) == 0 && - (mHeadsetState & BIT_FM_SPEAKER) != 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_FM_SPEAKER, - AudioSystem.DEVICE_STATE_UNAVAILABLE, - ""); - mConnectedDevices.remove(AudioSystem.DEVICE_OUT_FM_SPEAKER); - } else if ((state & BIT_FM_SPEAKER) != 0 && - (mHeadsetState & BIT_FM_SPEAKER) == 0) { - AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_FM_SPEAKER, - AudioSystem.DEVICE_STATE_AVAILABLE, - ""); - mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_FM_SPEAKER), ""); + int microphone = intent.getIntExtra("microphone", 0); + + if (microphone != 0) { + boolean isConnected = mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_WIRED_HEADSET); + if (state == 0 && isConnected) { + AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADSET, + AudioSystem.DEVICE_STATE_UNAVAILABLE, + ""); + mConnectedDevices.remove(AudioSystem.DEVICE_OUT_WIRED_HEADSET); + } else if (state == 1 && !isConnected) { + AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADSET, + AudioSystem.DEVICE_STATE_AVAILABLE, + ""); + mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADSET), ""); + } + } else { + boolean isConnected = mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE); + if (state == 0 && isConnected) { + AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE, + AudioSystem.DEVICE_STATE_UNAVAILABLE, + ""); + mConnectedDevices.remove(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE); + } else if (state == 1 && !isConnected) { + AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE, + AudioSystem.DEVICE_STATE_AVAILABLE, + ""); + mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE), ""); + } } - mHeadsetState = state; } } } diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index dbf6d9d..9fe5328 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -243,9 +243,6 @@ public class AudioSystem public static final int DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES = 0x100; public static final int DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER = 0x200; public static final int DEVICE_OUT_AUX_DIGITAL = 0x400; - public static final int DEVICE_OUT_FM_HEADPHONE = 0x800; - public static final int DEVICE_OUT_FM_SPEAKER = 0x1000; - public static final int DEVICE_OUT_TTY = 0x2000; public static final int DEVICE_OUT_DEFAULT = 0x8000; // input devices public static final int DEVICE_IN_COMMUNICATION = 0x10000; |