我在CN1中构建一个与BLE设备(BlueGiga BLE模块)通信的应用程序。在Android 5.0中,CN1应用程序可以正常工作。在Android 6中,相同的应用无法找到任何BLE设备。但是,我可以手动连接到特定的BLE设备(设备地址预设)。因此Android 6中的扫描不起作用。 基于this我发现我需要打开GPS位置并在源代码中添加:
LocationManager locationManager = LocationManager.getLocationManager();
这是CN1中的错误还是android中的问题? Android 6中的默认扫描程序(在“设置” - >“蓝牙”下)和应用程序BlueGiga不需要打开GPS位置(BlueGiga是用Android编写的)。我还发现需要转换GPS位置的应用BLE Scanner。它是用CN1写的吗?
为什么有必要打开GPS位置进行BLE扫描才能在Android 6设备上运行?
答案 0 :(得分:0)
Android中的位置管理器并不一定映射到GPS,它映射到"混合位置"这意味着它可以从各种来源获取位置并将它们组合到一个位置。
我对该设备不够熟悉,但如果它提供了位置,那么就可以询问位置权限"这就是我们在这里做的事情。正如詹姆斯在评论中提到的,这与设备被实现为BLE的事实无关,因为它是一个外部的cn1lib,我们只是调用Android API来抽象它。