Loading core/java/android/server/BluetoothEventLoop.java +13 −1 Original line number Diff line number Diff line Loading @@ -648,7 +648,8 @@ class BluetoothEventLoop { } else { Log.i(TAG, "Rejecting incoming A2DP / AVRCP connection from " + address); } } else if (BluetoothUuid.isInputDevice(uuid) && !isOtherInputDeviceConnected(address)) { } else if (BluetoothUuid.isInputDevice(uuid) && !isOtherInputDeviceConnected(address) && isKeyboard(address)) { BluetoothInputDevice inputDevice = new BluetoothInputDevice(mContext); authorized = inputDevice.getInputDevicePriority(device) > BluetoothInputDevice.PRIORITY_OFF; Loading @@ -667,6 +668,17 @@ class BluetoothEventLoop { return authorized; } private boolean isKeyboard(String address) { BluetoothClass btClass = new BluetoothClass(mBluetoothService.getRemoteClass(address)); int btDeviceClass = btClass.getDeviceClass(); if (btDeviceClass == BluetoothClass.Device.PERIPHERAL_KEYBOARD || btDeviceClass == BluetoothClass.Device.PERIPHERAL_KEYBOARD_POINTING) { return true; } log("Incoming Connect: Input device class: " + btDeviceClass + " Not a keyboard"); return false; } private boolean isOtherInputDeviceConnected(String address) { List<BluetoothDevice> devices = mBluetoothService.lookupInputDevicesMatchingStates(new int[] { Loading core/java/android/server/BluetoothService.java +9 −0 Original line number Diff line number Diff line Loading @@ -1729,6 +1729,15 @@ public class BluetoothService extends IBluetooth.Stub { getInputDevicePriority(device) == BluetoothInputDevice.PRIORITY_OFF) { return false; } BluetoothClass btClass = new BluetoothClass(getRemoteClass(device.getAddress())); int btDeviceClass = btClass.getDeviceClass(); if (btDeviceClass != BluetoothClass.Device.PERIPHERAL_KEYBOARD && btDeviceClass != BluetoothClass.Device.PERIPHERAL_KEYBOARD_POINTING) { log("Input device btDeviceClass: " + btDeviceClass + " Not a keyboard"); return false; } BluetoothDeviceProfileState state = mDeviceProfileState.get(device.getAddress()); if (state != null) { Message msg = new Message(); Loading Loading
core/java/android/server/BluetoothEventLoop.java +13 −1 Original line number Diff line number Diff line Loading @@ -648,7 +648,8 @@ class BluetoothEventLoop { } else { Log.i(TAG, "Rejecting incoming A2DP / AVRCP connection from " + address); } } else if (BluetoothUuid.isInputDevice(uuid) && !isOtherInputDeviceConnected(address)) { } else if (BluetoothUuid.isInputDevice(uuid) && !isOtherInputDeviceConnected(address) && isKeyboard(address)) { BluetoothInputDevice inputDevice = new BluetoothInputDevice(mContext); authorized = inputDevice.getInputDevicePriority(device) > BluetoothInputDevice.PRIORITY_OFF; Loading @@ -667,6 +668,17 @@ class BluetoothEventLoop { return authorized; } private boolean isKeyboard(String address) { BluetoothClass btClass = new BluetoothClass(mBluetoothService.getRemoteClass(address)); int btDeviceClass = btClass.getDeviceClass(); if (btDeviceClass == BluetoothClass.Device.PERIPHERAL_KEYBOARD || btDeviceClass == BluetoothClass.Device.PERIPHERAL_KEYBOARD_POINTING) { return true; } log("Incoming Connect: Input device class: " + btDeviceClass + " Not a keyboard"); return false; } private boolean isOtherInputDeviceConnected(String address) { List<BluetoothDevice> devices = mBluetoothService.lookupInputDevicesMatchingStates(new int[] { Loading
core/java/android/server/BluetoothService.java +9 −0 Original line number Diff line number Diff line Loading @@ -1729,6 +1729,15 @@ public class BluetoothService extends IBluetooth.Stub { getInputDevicePriority(device) == BluetoothInputDevice.PRIORITY_OFF) { return false; } BluetoothClass btClass = new BluetoothClass(getRemoteClass(device.getAddress())); int btDeviceClass = btClass.getDeviceClass(); if (btDeviceClass != BluetoothClass.Device.PERIPHERAL_KEYBOARD && btDeviceClass != BluetoothClass.Device.PERIPHERAL_KEYBOARD_POINTING) { log("Input device btDeviceClass: " + btDeviceClass + " Not a keyboard"); return false; } BluetoothDeviceProfileState state = mDeviceProfileState.get(device.getAddress()); if (state != null) { Message msg = new Message(); Loading