Loading media/java/android/media/AudioService.java +33 −20 Original line number Diff line number Diff line Loading @@ -1917,7 +1917,9 @@ public class AudioService extends IAudioService.Stub { } else if (action.equals(Intent.ACTION_HEADSET_PLUG)) { int state = intent.getIntExtra("state", 0); int microphone = intent.getIntExtra("microphone", 0); String name = intent.getStringExtra("name"); if (name != null && !name.equalsIgnoreCase("1")) { if (microphone != 0) { boolean isConnected = mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_WIRED_HEADSET); if (state == 0 && isConnected) { Loading Loading @@ -1945,6 +1947,17 @@ public class AudioService extends IAudioService.Stub { mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE), ""); } } } else { if (state == 0) { AudioSystem.setDeviceConnectionState(0x20000, AudioSystem.DEVICE_STATE_UNAVAILABLE, ""); } else if (state == 1) { AudioSystem.setDeviceConnectionState(0x20000, AudioSystem.DEVICE_STATE_AVAILABLE, ""); } } } else if (action.equals(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_AUDIO_STATE, BluetoothHeadset.STATE_ERROR); Loading services/java/com/android/server/HeadsetObserver.java +66 −47 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ class HeadsetObserver extends UEventObserver { private static final int BIT_HEADSET_NO_MIC = (1 << 1); private static final int SUPPORTED_HEADSETS = (BIT_HEADSET|BIT_HEADSET_NO_MIC); private static final int HEADSETS_WITH_MIC = BIT_HEADSET; private static final int I2C_CONNECTED = 2048; private static final int I2C_ROUTED = 6144; private int mHeadsetState; private int mPrevHeadsetState; Loading Loading @@ -100,6 +102,7 @@ class HeadsetObserver extends UEventObserver { } private synchronized final void update(String newName, int newState) { if (newState != I2C_ROUTED && newState != I2C_CONNECTED) { // Retain only relevant bits int headsetState = newState & SUPPORTED_HEADSETS; int newOrOld = headsetState | mHeadsetState; Loading Loading @@ -137,6 +140,9 @@ class HeadsetObserver extends UEventObserver { mPrevHeadsetState, mHeadsetName), delay); } else { sendIntent(0, newState, 0, ""); } } private synchronized final void sendIntents(int headsetState, int prevHeadsetState, String headsetName) { Loading @@ -150,6 +156,7 @@ class HeadsetObserver extends UEventObserver { } private final void sendIntent(int headset, int headsetState, int prevHeadsetState, String headsetName) { if (headsetState != I2C_ROUTED && headsetState != I2C_CONNECTED) { if ((headsetState & headset) != (prevHeadsetState & headset)) { // Pack up the values and broadcast them to everyone Intent intent = new Intent(Intent.ACTION_HEADSET_PLUG); Loading @@ -171,6 +178,18 @@ class HeadsetObserver extends UEventObserver { // TODO: Should we require a permission? ActivityManagerNative.broadcastStickyIntent(intent, null); } } else { Intent intent = new Intent("com.teamwin"); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); int state = 0; if (headsetState == I2C_ROUTED) { state = 1; } intent.putExtra("state", state); ActivityManagerNative.broadcastStickyIntent(intent, null); } } private final Handler mHandler = new Handler() { Loading Loading
media/java/android/media/AudioService.java +33 −20 Original line number Diff line number Diff line Loading @@ -1917,7 +1917,9 @@ public class AudioService extends IAudioService.Stub { } else if (action.equals(Intent.ACTION_HEADSET_PLUG)) { int state = intent.getIntExtra("state", 0); int microphone = intent.getIntExtra("microphone", 0); String name = intent.getStringExtra("name"); if (name != null && !name.equalsIgnoreCase("1")) { if (microphone != 0) { boolean isConnected = mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_WIRED_HEADSET); if (state == 0 && isConnected) { Loading Loading @@ -1945,6 +1947,17 @@ public class AudioService extends IAudioService.Stub { mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE), ""); } } } else { if (state == 0) { AudioSystem.setDeviceConnectionState(0x20000, AudioSystem.DEVICE_STATE_UNAVAILABLE, ""); } else if (state == 1) { AudioSystem.setDeviceConnectionState(0x20000, AudioSystem.DEVICE_STATE_AVAILABLE, ""); } } } else if (action.equals(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_AUDIO_STATE, BluetoothHeadset.STATE_ERROR); Loading
services/java/com/android/server/HeadsetObserver.java +66 −47 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ class HeadsetObserver extends UEventObserver { private static final int BIT_HEADSET_NO_MIC = (1 << 1); private static final int SUPPORTED_HEADSETS = (BIT_HEADSET|BIT_HEADSET_NO_MIC); private static final int HEADSETS_WITH_MIC = BIT_HEADSET; private static final int I2C_CONNECTED = 2048; private static final int I2C_ROUTED = 6144; private int mHeadsetState; private int mPrevHeadsetState; Loading Loading @@ -100,6 +102,7 @@ class HeadsetObserver extends UEventObserver { } private synchronized final void update(String newName, int newState) { if (newState != I2C_ROUTED && newState != I2C_CONNECTED) { // Retain only relevant bits int headsetState = newState & SUPPORTED_HEADSETS; int newOrOld = headsetState | mHeadsetState; Loading Loading @@ -137,6 +140,9 @@ class HeadsetObserver extends UEventObserver { mPrevHeadsetState, mHeadsetName), delay); } else { sendIntent(0, newState, 0, ""); } } private synchronized final void sendIntents(int headsetState, int prevHeadsetState, String headsetName) { Loading @@ -150,6 +156,7 @@ class HeadsetObserver extends UEventObserver { } private final void sendIntent(int headset, int headsetState, int prevHeadsetState, String headsetName) { if (headsetState != I2C_ROUTED && headsetState != I2C_CONNECTED) { if ((headsetState & headset) != (prevHeadsetState & headset)) { // Pack up the values and broadcast them to everyone Intent intent = new Intent(Intent.ACTION_HEADSET_PLUG); Loading @@ -171,6 +178,18 @@ class HeadsetObserver extends UEventObserver { // TODO: Should we require a permission? ActivityManagerNative.broadcastStickyIntent(intent, null); } } else { Intent intent = new Intent("com.teamwin"); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); int state = 0; if (headsetState == I2C_ROUTED) { state = 1; } intent.putExtra("state", state); ActivityManagerNative.broadcastStickyIntent(intent, null); } } private final Handler mHandler = new Handler() { Loading