summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2022-08-25 07:53:19 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2022-08-25 07:53:19 +0000
commit4a691142d6f97ad99f0e62c7689d2dc93721e5ac (patch)
tree4dcac9ab90fa1244f7c30cfdb5f60a4faf2127c1
parentc224104952ee884823ccdd066e2ab3c7311295ce (diff)
parentc36de01a103fbc44b5552c10c03282aa76935fa6 (diff)
Merge "Attempt outgoing HID host reconnection"
-rw-r--r--android/app/src/com/android/bluetooth/btservice/PhonePolicy.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java b/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
index c81a5fbd69..163a3cdf7d 100644
--- a/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
+++ b/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
@@ -576,6 +576,7 @@ class PhonePolicy {
+ " attempting auto connection");
autoConnectHeadset(mostRecentlyActiveA2dpDevice);
autoConnectA2dp(mostRecentlyActiveA2dpDevice);
+ autoConnectHidHost(mostRecentlyActiveA2dpDevice);
} else {
debugLog("autoConnect() - BT is in quiet mode. Not initiating auto connections");
}
@@ -614,6 +615,23 @@ class PhonePolicy {
}
}
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ private void autoConnectHidHost(BluetoothDevice device) {
+ final HidHostService hidHostService = mFactory.getHidHostService();
+ if (hidHostService == null) {
+ warnLog("autoConnectHidHost: service is null, failed to connect to " + device);
+ return;
+ }
+ int hidHostConnectionPolicy = hidHostService.getConnectionPolicy(device);
+ if (hidHostConnectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
+ debugLog("autoConnectHidHost: Connecting HID with " + device);
+ hidHostService.connect(device);
+ } else {
+ debugLog("autoConnectHidHost: skipped auto-connect HID with device " + device
+ + " connectionPolicy " + hidHostConnectionPolicy);
+ }
+ }
+
private void connectOtherProfile(BluetoothDevice device) {
if (mAdapterService.isQuietModeEnabled()) {
debugLog("connectOtherProfile: in quiet mode, skip connect other profile " + device);
@@ -657,6 +675,7 @@ class PhonePolicy {
VolumeControlService volumeControlService =
mFactory.getVolumeControlService();
BatteryService batteryService = mFactory.getBatteryService();
+ HidHostService hidHostService = mFactory.getHidHostService();
if (hsService != null) {
if (!mHeadsetRetrySet.contains(device) && (hsService.getConnectionPolicy(device)
@@ -730,6 +749,15 @@ class PhonePolicy {
batteryService.connect(device);
}
}
+ if (hidHostService != null) {
+ if ((hidHostService.getConnectionPolicy(device)
+ == BluetoothProfile.CONNECTION_POLICY_ALLOWED)
+ && (hidHostService.getConnectionState(device)
+ == BluetoothProfile.STATE_DISCONNECTED)) {
+ debugLog("Retrying connection to HID with device " + device);
+ hidHostService.connect(device);
+ }
+ }
}
private static void debugLog(String msg) {