簡體   English   中英

設備綁定時,Android 不會廣播 ACTION_BOND_STATE_CHANGED

[英]Android is not broadcasting ACTION_BOND_STATE_CHANGED when the device gets bonded

我有一個 BluetoothDevice.ACTION_BOND_STATE_CHANGED 的廣播接收器,看起來像這樣:

fun Int.toBondStateDescription() = when (this) {
    BluetoothDevice.BOND_BONDED -> "BONDED"
    BluetoothDevice.BOND_BONDING -> "BONDING"
    BluetoothDevice.BOND_NONE -> "NOT BONDED"
    else -> "ERROR: $this"
}

when (intent?.action) {
     BluetoothDevice.ACTION_BOND_STATE_CHANGED -> {
          val device = intent.getParcelableExtra<BluetoothDevice>(BluetoothDevice.EXTRA_DEVICE)
          val previousBondState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, -1)
          val bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, -1)
          val bondTransition = "${previousBondState.toBondStateDescription()} to " + bondState.toBondStateDescription()
          Log.w("Bond state change", "${device?.address} bond state changed | $bondTransition")
     }
}

當狀態從BOND_NONE變為BOND_BONDING或相反時,這很有效。 但是,當它從BOND_BONDINGBOND_BONDED時,我什么也沒得到。 如果我手動獲取設備的綁定狀態,我可以看到它已綁定,但我從未收到任何通知。

我錯過了什么嗎?

示例日志:

// Connection begins
D/BluetoothGatt: connect() - device: XX:XX:XX:XX:XX:XX, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=1b5f1492-f53f-4d06-8704-6de7b0222769
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=9
D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=9 device=XX:XX:XX:XX:XX:XX
D/BluetoothGatt: onConnectionUpdated() - Device=XX:XX:XX:XX:XX:XX interval=36 latency=0 timeout=500 status=42
D/MyBroadcastReceiver: ACTION_BOND_STATE_CHANGED
D/Bond state change: XX:XX:XX:XX:XX:XX bond state changed | NOT BONDED to BONDING

// Android stuff
V/FA: Connecting to remote service
V/FA: Connection attempt already in progress
V/FA: Activity paused, time: 1735662355
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 2
V/FA: Activity resumed, time: 1735663677

// Then I press a button that prints out the bond state, I can see that it is bonded but I was never notified
D/BOND STATE: BONDED

這似乎是Android方面的一個問題。 我已經發現了一些類似的問題,但它們也仍未解決,請參見此處:

我創建了一個問題供 Google 查看。 你可以在這里找到它。

如果有任何新內容出現,我將更新此答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM