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

Commit 1eb86d8b authored by Mike Lockwood's avatar Mike Lockwood Committed by Android Git Automerger
Browse files

am 9be487ce: am 606d591a: Merge "Add new Usb.ACTION_USB_STATE sticky broadcast...

am 9be487ce: am 606d591a: Merge "Add new Usb.ACTION_USB_STATE sticky broadcast for monitoring USB connect state" into gingerbread

Merge commit '9be487ce'

* commit '9be487ce':
  Add new Usb.ACTION_USB_STATE sticky broadcast for monitoring USB connect state
parents 9593b2ac 9be487ce
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -39,6 +39,27 @@ public class Usb {
    public static final String ACTION_USB_DISCONNECTED =
            "android.hardware.action.USB_DISCONNECTED";

   /**
     * Broadcast Action:  A sticky broadcast for USB state change events.
     *
     * This is a sticky broadcast for clients that are interested in both USB connect and
     * disconnect events.  If you are only concerned with one or the other, you can use
     * {@link #ACTION_USB_CONNECTED} or {@link #ACTION_USB_DISCONNECTED} to avoid receiving
     * unnecessary broadcasts.  The boolean {@link #USB_CONNECTED} extra indicates whether
     * USB is connected or disconnected.
     * The extras bundle will also contain name/value pairs with the name of the function
     * and a value of either {@link #USB_FUNCTION_ENABLED} or {@link #USB_FUNCTION_DISABLED}.
     * Possible USB function names include {@link #USB_FUNCTION_MASS_STORAGE},
     * {@link #USB_FUNCTION_ADB}, {@link #USB_FUNCTION_RNDIS} and {@link #USB_FUNCTION_MTP}.
     */
    public static final String ACTION_USB_STATE =
            "android.hardware.action.USB_STATE";

    /**
     * Boolean extra indicating whether USB is connected or disconnected.
     * Used in extras for the {@link #ACTION_USB_STATE} broadcast.
     */
    public static final String USB_CONNECTED = "connected";

    /**
     * Name of the USB mass storage USB function.
+21 −11
Original line number Diff line number Diff line
@@ -159,6 +159,16 @@ class UsbObserver extends UEventObserver {
    }

    private final Handler mHandler = new Handler() {
        private void addEnabledFunctions(Intent intent) {
            // include state of all USB functions in our extras
            for (int i = 0; i < mEnabledFunctions.size(); i++) {
                intent.putExtra(mEnabledFunctions.get(i), Usb.USB_FUNCTION_ENABLED);
            }
            for (int i = 0; i < mDisabledFunctions.size(); i++) {
                intent.putExtra(mDisabledFunctions.get(i), Usb.USB_FUNCTION_DISABLED);
            }
        }

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
@@ -174,21 +184,21 @@ class UsbObserver extends UEventObserver {
                        // Send an Intent containing connected/disconnected state
                        // and the enabled/disabled state of all USB functions
                        Intent intent;
                        if (mUsbConfig != 0) {
                        boolean usbConnected = (mUsbConfig != 0);
                        if (usbConnected) {
                            intent = new Intent(Usb.ACTION_USB_CONNECTED);

                            // include state of all USB functions in our extras
                            for (int i = 0; i < mEnabledFunctions.size(); i++) {
                                intent.putExtra(mEnabledFunctions.get(i), Usb.USB_FUNCTION_ENABLED);
                            }
                            for (int i = 0; i < mDisabledFunctions.size(); i++) {
                                intent.putExtra(mDisabledFunctions.get(i), Usb.USB_FUNCTION_DISABLED);
                            }
                            addEnabledFunctions(intent);
                        } else {
                            intent = new Intent(Usb.ACTION_USB_DISCONNECTED);
                        }
                        mContext.sendBroadcast(intent);

                        mContext.sendBroadcast(intent, android.Manifest.permission.ACCESS_USB);
                        // send a sticky broadcast for clients interested in both connect and disconnect
                        intent = new Intent(Usb.ACTION_USB_STATE);
                        intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
                        intent.putExtra(Usb.USB_CONNECTED, usbConnected);
                        addEnabledFunctions(intent);
                        mContext.sendStickyBroadcast(intent);
                    }
                    break;
            }