在 Marshmallow 中使用蓝牙扫描定位精度

Using Bluetooth scanning for location accuracy in Marshmallow

在 Android 4.3 中,Android 实现了始终在线的 WiFi 理念,即使您关闭了 Wi-Fi,设备和应用程序仍然可以扫描 WiFi 网络以改进位置的准确性。除了使用网络三角测量,这是另一种尽快获取当前位置的方法,而不必过多依赖 GPS 信号。

Android M 正在进一步推进这一想法,将蓝牙扫描添加到等式中。在 M 的位置设置下,您会在菜单中找到扫描选项,可以在其中打开和关闭 Wifi 和蓝牙扫描。启用后,蓝牙扫描可能会寻找像信标这样的 BLE 设备,以便更快地定位。

图像已调整大小。点击查看大图

这在未来在购物中心、机场和各种室内或地下位置可能非常有用,在这些位置,蓝牙信标的覆盖范围和散布可能超过缓慢或不可能的 GPS 信号锁定。事实上,它始终处于开启状态,只要应用程序需要定位即可访问,这比您必须记住手动打开蓝牙更方便。

任何人都可以帮助提供一些见解或示例代码,以便在没有打开主要蓝牙设置的情况下使用 BLE 扫描信标吗?

我想通了。

我们必须编写一个系统应用程序并使用

BluetoothAdapter.enableBLE()

方法。 此方法适用于 special/system 使用低功耗蓝牙扫描附近设备的应用程序,如果在设备设置中关闭蓝牙,这些应用程序主要用于定位 accuracy.Even。 然后我们可以使用

BluetoothAdapter.LeScanCallback

回调以获取设备详细信息。

样本:

调用方法:

mBluetoothAdapter.enableBLE())

回调: 私人 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();
                }
            });
        }
    };

谢谢