AltBeacon 在停止蓝牙后继续扫描
AltBeacon keeps scanning after stopping Bluetooth
我正在开发一个也使用后台扫描的应用程序。参见
我观察到一个奇怪的行为。当我从设备设置中停止蓝牙时,应用程序会继续扫描并调用 didEnterRegion 和 didExitRegion。通知栏中的蓝牙符号消失了。
我还可以在 logcat 中看到 D/BluetoothLeScanner: onScanResult() ... 条目。
怎么会这样?
我们收到了一些关于某些设备上此行为的其他报告。确切原因不明,但我怀疑某些设备在 Android 设置 UI 中没有准确反映蓝牙状态。有可能即使用户禁用蓝牙,如果某些应用程序已经在使用它,那么无论设置 UI 说什么,它都会保持打开状态。
编辑:根据评论中的反馈,如果在应用程序处于活动状态之前或期间启用,某些三星 S3 型号似乎会保留应用程序特定的蓝牙访问权限。即使您在系统 UI 中关闭蓝牙,它仍会为所有使用它的 运行 应用程序打开,不管 UI 怎么说。 在蓝牙关闭后启动的其他应用程序关闭的行为就好像它确实关闭了一样。
确认这一点的一种方法是将您的设备置于此状态,然后重新启动 Locate app for Android。如果蓝牙在应用启动时处于关闭状态,此应用将向用户显示一个对话框,告诉他们打开蓝牙。此测试将独立确认蓝牙是否真的关闭,而不管 UI 报告的设置是什么。
除了对上述测试的结果进行评论外,了解设备的型号、Android 版本和内部版本号也会非常有用,所有这些都可以在设置 -> 关于 Phone.
完全披露:我是 Android Beacon Library 项目的首席开发人员。
我正在开发一个也使用后台扫描的应用程序。参见
我观察到一个奇怪的行为。当我从设备设置中停止蓝牙时,应用程序会继续扫描并调用 didEnterRegion 和 didExitRegion。通知栏中的蓝牙符号消失了。 我还可以在 logcat 中看到 D/BluetoothLeScanner: onScanResult() ... 条目。
怎么会这样?
我们收到了一些关于某些设备上此行为的其他报告。确切原因不明,但我怀疑某些设备在 Android 设置 UI 中没有准确反映蓝牙状态。有可能即使用户禁用蓝牙,如果某些应用程序已经在使用它,那么无论设置 UI 说什么,它都会保持打开状态。
编辑:根据评论中的反馈,如果在应用程序处于活动状态之前或期间启用,某些三星 S3 型号似乎会保留应用程序特定的蓝牙访问权限。即使您在系统 UI 中关闭蓝牙,它仍会为所有使用它的 运行 应用程序打开,不管 UI 怎么说。 在蓝牙关闭后启动的其他应用程序关闭的行为就好像它确实关闭了一样。
确认这一点的一种方法是将您的设备置于此状态,然后重新启动 Locate app for Android。如果蓝牙在应用启动时处于关闭状态,此应用将向用户显示一个对话框,告诉他们打开蓝牙。此测试将独立确认蓝牙是否真的关闭,而不管 UI 报告的设置是什么。
除了对上述测试的结果进行评论外,了解设备的型号、Android 版本和内部版本号也会非常有用,所有这些都可以在设置 -> 关于 Phone.
完全披露:我是 Android Beacon Library 项目的首席开发人员。