Мой пример кода прост:
connectButton.setOnClickListener {
(getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager?)?.adapter?.getRemoteDevice(
"44:73:D6:0A:EA:79"
)?.let {
Log.i(TAG, "trying to connect ${it.type}")
val gatt = it.connectGatt(this, true, object : BluetoothGattCallback() {
override fun onConnectionStateChange(
gatt: BluetoothGatt?,
status: Int,
newState: Int
) {
Log.i(TAG, "connection status: $status, newState: $newState")
}
}, TRANSPORT_AUTO)
Log.i(TAG, "gatt is $gatt")
}
При autoConnect = true журнал внутри onConnectionStateChange
никогда не печатается.
I/BLE: trying to connect 2
D/BluetoothGatt: connect() - device: 44:73:D6:0A:EA:79, auto: true
registerApp()
registerApp() - UUID=6376adc0-c38c-4088-8da7-2175a640cec2
I/BLE: gatt is android.bluetooth.BluetoothGatt@415f1c6
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=5
со значением false, он печатает еще три строки
I/BLE: connection status: 0, newState: 2
D/BluetoothGatt: onConnectionUpdated() - Device=44:73:D6:0A:EA:79 interval=6 latency=0 timeout=500 status=0
D/BluetoothGatt: onConnectionUpdated() - Device=44:73:D6:0A:EA:79 interval=36 latency=0 timeout=500 status=0
Протестировано на Huawei Mate20 с установленным android 10.
Редактировать: периферийное устройство имитируется другим устройством Android / iOS, при подключении к наушнику Bose этот фрагмент выглядит хорошо, могу ли я что-нибудь сделать, чтобы симуляционное устройство работало?