代号一 - Android 6 上的 BLE 扫描不工作

Codename one - BLE scanning on Android 6 not working

我正在 CN1 中构建一个与 BLE 设备(BlueGiga BLE 模块)通信的应用程序。在 android 5.0 中,CN1 应用程序可以正常工作。在 Android 6 中,同一应用找不到任何 BLE 设备。但是,我可以手动连接到特定的 BLE 设备(设备地址预设)。所以 Android6 中的扫描不起作用。 基于 this 我发现我需要打开 GPS 位置并在源代码中添加:

LocationManager locationManager = LocationManager.getLocationManager();

这是 CN1 中的错误还是 android 中的问题? Android 6 中的默认扫描仪(在设置 -> 蓝牙下)和需要打开 GPS 位置的应用程序 BlueGiga don't need to turn on GPS location (BlueGiga is written in Android). I also found the app BLE Scanner。是用CN1写的吗?

为什么 BLE 扫描需要打开 GPS 定位才能在 Android6 的设备上工作?

Android 中的位置管理器不一定映射到 GPS,而是映射到 "hybrid location",这意味着它可以从各种来源获取位置并将它们组合到一个位置。

我对该设备还不够熟悉,但如果它提供了位置信息,那么 "ask for location permissions" 这就是我们在这里所做的事情。正如 James 在评论中提到的,这与设备作为 BLE 实现的事实无关,因为它是一个外部 cn1lib,我们只是调用抽象的 Android API。