android - AltBeacon 在停止蓝牙后继续扫描

标签 android bluetooth-lowenergy ibeacon-android altbeacon android-ibeacon

我正在开发一个也使用后台扫描的应用程序。参见 Using AltBeacon: start and stop scanning from app settings

我观察到一个奇怪的行为。当我从设备设置中停止蓝牙时,应用程序会继续扫描并调用 didEnterRegion 和 didExitRegion。通知栏中的蓝牙符号消失了。 我还可以在 logcat 中看到 D/BluetoothLeScanner: onScanResult() ... 条目。

这怎么可能?

最佳答案

我们在某些设备上收到了一些关于此行为的其他报告。确切原因不明,但我怀疑某些设备没有在 Android 设置 UI 中准确反射(reflect)蓝牙状态。有可能即使用户禁用蓝牙,如果某些应用程序已经在使用它,那么无论设置 UI 说什么,它都会保持打开状态。

编辑:根据评论中的反馈,听起来某些 Samsung S3 型号保留了应用程序特定的蓝牙访问权限,如果它在应用程序处于 Activity 状态之前或期间启用的话。即使您在系统 UI 中关闭了蓝牙,对于所有正在运行的使用它的应用程序,它仍然保持打开状态,无论 UI 怎么说。在蓝牙关闭后启动的其他应用程序的行为就好像它确实关闭了一样。

确认这一点的一种方法是将您的设备置于此状态,然后重新启动 Locate app for Android .如果蓝牙在应用启动时处于关闭状态,此应用将向用户显示一个对话框,告诉他们打开蓝牙。无论设置 UI 报告什么,此测试都会独立确认蓝牙是否真的关闭。

除了对上述测试结果发表评论外,了解设备的型号、Android 版本和内部版本号也会非常有用,所有这些都可以在“设置”->“关于手机”下找到。

全面披露:我是 Android Beacon Library 的首席开发人员项目。

关于android - AltBeacon 在停止蓝牙后继续扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34269418/

相关文章:

android - BLE 信号发射的模拟测试?

android - Android Bottom Sheet

java - 停止 MediaPlayer 时出现问题

windows-8 - Windows 8 低功耗蓝牙 API 示例

android - bluetoothgatt onCharacteristicWrite 使用 ble 设备返回状态代码 6

bluetooth-lowenergy - Android : iBeacon - read its advertisement (e. g txPower)

Android joda 时间从 24 转换为 12

android - 获取谷歌广告 ID Xamarin 时出错

macos - Apple Mac 蓝牙低功耗代码与预编译 header 和更新版本的 Xcode 相关的问题

android - 为什么 isMultipleAdvertisementSupported() 在 getBluetoothLeAdvertiser 返回对象时返回 false?