借助Android 4.3,Android实现了永远在线WiFi的理念,即使您关闭了Wi-Fi,设备和应用仍然可以扫描WiFi网络以提高位置的准确性。除了使用网络三角测量之外,这是另一种尽可能快地获取当前位置的方法,而无需过多依赖GPS信号。
Android M正在进一步推动这一想法,将蓝牙扫描添加到等式中。在M上的位置设置下,您将在菜单中找到扫描选项,可以打开和关闭Wifi和蓝牙扫描。启用后,蓝牙扫描可能会寻找信标等BLE设备,以便更快地进行定位。
图片已调整大小。点击查看完整尺寸
这在未来的商场,机场以及各种室内或地下场所非常有用,其中蓝牙信标的范围和分散可能超过缓慢或不可能的GPS信号锁定。事实上它始终打开,只要应用程序需要定位,就可以访问它,这比使用手动打开蓝牙时更容易使用。
任何人都可以帮助提供一些见解或示例代码,以便在未启用主要蓝牙设置的情况下使用BLE扫描信标吗?
答案 0 :(得分:1)
我明白了。
我们必须编写一个系统应用程序并使用
BluetoothAdapter.enableBLE()
方法。 此方法适用于使用蓝牙低功耗扫描附近设备的特殊/系统应用程序,这些设备主要用于定位精度。即使在设备设置中关闭蓝牙也是如此。 然后我们可以使用
BluetoothAdapter.LeScanCallback
回调以获取设备详细信息。
样品:
用于调用方法:
mBluetoothAdapter.enableBLE())
用于回调: private BluetoothAdapter.LeScanCallback mLeScanCallback = 新的BluetoothAdapter.LeScanCallback(){
@Override
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
if( device == null ){
System.out.println("-------onLeScan "+device);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
mLeDeviceListAdapter.addDevice(device);
mLeDeviceListAdapter.notifyDataSetChanged();
}
});
}
};
由于