Merge "usb: Don't show the notification when no USB device is connected"
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 6ea416b..d580995 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -508,6 +508,7 @@
// current USB state
private boolean mHostConnected;
private boolean mUsbAccessoryConnected;
+ private boolean mInHostModeWithNoAccessoryConnected;
private boolean mSourcePower;
private boolean mSinkPower;
private boolean mConfigured;
@@ -959,6 +960,17 @@
mSupportsAllCombinations = false;
}
+ if (mHostConnected) {
+ if (!mUsbAccessoryConnected) {
+ mInHostModeWithNoAccessoryConnected = true;
+ } else {
+ mInHostModeWithNoAccessoryConnected = false;
+ }
+ } else {
+ // if not in host mode, reset value to false
+ mInHostModeWithNoAccessoryConnected = false;
+ }
+
mAudioAccessorySupported = port.isModeSupported(MODE_AUDIO_ACCESSORY);
args.recycle();
@@ -983,6 +995,12 @@
Slog.i(TAG, "HOST_STATE connected:" + mUsbAccessoryConnected);
}
+ if (!devices.hasNext()) {
+ mInHostModeWithNoAccessoryConnected = true;
+ } else {
+ mInHostModeWithNoAccessoryConnected = false;
+ }
+
mHideUsbNotification = false;
while (devices.hasNext()) {
Map.Entry pair = (Map.Entry) devices.next();
@@ -1192,7 +1210,8 @@
// Dont show the notification when connected to a USB peripheral
// and the link does not support PR_SWAP and DR_SWAP
- if (mHideUsbNotification && !mSupportsAllCombinations) {
+ if ((mHideUsbNotification || mInHostModeWithNoAccessoryConnected)
+ && !mSupportsAllCombinations) {
if (mUsbNotificationId != 0) {
mNotificationManager.cancelAsUser(null, mUsbNotificationId,
UserHandle.ALL);