我正在开发一款使用背景扫描的应用程序。见Using AltBeacon: start and stop scanning from app settings
我发现了一种奇怪的行为。当我从设备设置停止蓝牙时,应用程序会继续扫描并调用didEnterRegion和didExitRegion。通知栏中的蓝牙符号消失了。 我还可以在logcat中看到 D / BluetoothLeScanner:onScanResult() ... entrys。
这怎么可能?
答案 0 :(得分:1)
我们在某些设备上收到了一些有关此行为的报告。确切原因未知,但我怀疑某些设备无法准确反映Android设置界面中的蓝牙状态。有可能即使用户禁用蓝牙,如果某些应用程序已经在使用蓝牙,那么即使设置用户界面显示了它,它仍然保持打开状态。
编辑:根据评论中的反馈,听起来有些三星S3型号保留了应用程序特定的蓝牙访问权限,如果它在应用程序处于活动状态之前或期间启用。即使您在系统用户界面中关闭了蓝牙功能,它仍然会在所有正在运行的应用程序中使用它,尽管用户界面说明了这一点。蓝牙关闭后启动的其他应用程序就像确实关闭一样。
确认这一点的一种方法是将您的设备置于此状态,然后重新启动Locate app for Android。此应用程序将向用户显示一个对话框,告诉他们如果在应用启动时关闭蓝牙,则会打开蓝牙。无论UI报告的设置是什么,此测试都可以独立确认蓝牙是否真的关闭。
除了评论上述测试的结果外,了解设备的Modelnumber,Android版本和Build编号非常有用,所有这些都可以在Settings - >下找到。关于电话。
完全披露:我是Android Beacon Library项目的首席开发人员。