Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e63f6d7e authored by Steve Kondik's avatar Steve Kondik Committed by Gerrit Code Review
Browse files

Merge "Support for i2c devices" into gingerbread

parents 1294844a e59ccd8f
Loading
Loading
Loading
Loading
+33 −20
Original line number Diff line number Diff line
@@ -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) {
@@ -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);
+66 −47
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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) {
@@ -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);
@@ -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() {