android - 关闭蓝牙适配器不调用 onConnectionStateChange Android 8.1.0

标签 android bluetooth android-bluetooth android-ble bluetooth-gatt

在 Android 系统设置中关闭蓝牙可以让我们在 Android < 27 (Oreo) 中调用 BluetoothGattCallback.onConnectionStateChange()。但是,当我在 Pixel 或 Nexus 5X (Android 8.1.0) 上尝试时,我没有收到该回调。蓝牙代码是否有一些更改,我们没有收到关于蓝牙设置更改的 BluetoothProfile.STATE_DISCONNECTED 通知。我注意到设备断开连接。此外,当关闭回调被调用的 BLE 设备时。感谢任何见解!

在此处作为问题提交 Google Issue

最佳答案

我想这是意料之中的,或者至少这一直是行为。当蓝牙关闭(或由于某种原因而死)时,蓝牙守护进程退出。但它也是发送您的 GATT 回调的相同过程。如果进程终止,它不能发送任何回调。

使用https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#ACTION_STATE_CHANGED而不是检测蓝牙何时关闭,那时你应该去关闭所有 BluetoothGatt 对象。

关于android - 关闭蓝牙适配器不调用 onConnectionStateChange Android 8.1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50032217/

相关文章:

图标下方的 Android 文本(按钮)

bluetooth - 我们可以将 Android 智能手机蓝牙角色更改为从属吗

ios - 在两个iOS设备之间通过蓝牙传输类(class)

java - 在配对或连接蓝牙扫描仪 (Inateck) 和移动设备时, Activity 会被破坏

android - 将传入的蓝牙数据读取到另一个应用程序

java - 如何通过您的应用程序访问另一个应用程序的/数据文件夹?

android - BroadcastReceiver 没有收到 Intent Intent.ACTION_LOCALE_CHANGED

android - 带图片和文字的ListView

c# - 使用 32feet .NET 蓝牙库将蓝牙设备与计算机配对

android - 循环启动和停止时蓝牙 LE 广告失败