使用蓝牙扫描在棉花糖中定位精度

时间:2015-12-22 10:55:30

标签: android android-bluetooth android-location bluetooth-lowenergy

借助Android 4.3,Android实现了永远在线WiFi的理念,即使您关闭了Wi-Fi,设备和应用仍然可以扫描WiFi网络以提高位置的准确性。除了使用网络三角测量之外,这是另一种尽可能快地获取当前位置的方法,而无需过多依赖GPS信号。

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

location setting on M

图片已调整大小。点击查看完整尺寸

这在未来的商场,机场以及各种室内或地下场所非常有用,其中蓝牙信标的范围和分散可能超过缓慢或不可能的GPS信号锁定。事实上它始终打开,只要应用程序需要定位,就可以访问它,这比使用手动打开蓝牙时更容易使用。

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

1 个答案:

答案 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();
                }
            });
        }
    };

由于