summaryrefslogtreecommitdiffstats
path: root/media/java
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2009-11-12 22:49:51 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-11-12 22:49:51 -0800
commite8302a64c7fb2e12bd04ac70114682c3a1260d03 (patch)
treededa93cfee3b09e28c7fbd2e0de76fd479c819da /media/java
parent2058977493230bec659e94756b1220b80fa7874a (diff)
parent1aa9f3cac31a7c2b50fcb3c9259cead8d638ae54 (diff)
downloadframeworks_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.java103
-rw-r--r--media/java/android/media/AudioSystem.java3
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;