使用startLeScan()显示Livedata

时间:2014-10-31 06:51:31

标签: android

我正在开发一款扫描设备的Android应用程序。我成功扫描了它们并显示了扫描的响应数据包。现在我已经修改了ble来传输扫描数据包,这些数据包将针对每个广告事件进行更改。所以我需要在我的应用程序中显示数据的实时更改。但是,一旦按下扫描,它将显示立即值,它不会更新下一个数据!我正在使用mBluetoothAdapter.startLeScan(mLeScanCallback)功能。 所以我需要快速启动和停止扫描以显示新数据。我试图使用多个启动和停止leScan的调用,但它挂起了应用程序。

以下是扫描的通用功能

private void scanLeDevice(final boolean enable){

    if (enable) {
        // Stops scanning after a pre-defined scan period.
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mScanning = false;
                mBluetoothAdapter.stopLeScan(mLeScanCallback);
                System.out.println("hello");
                invalidateOptionsMenu();
            }
        }, SCAN_PERIOD);

        mScanning = true;
        mBluetoothAdapter.startLeScan(mLeScanCallback);
    } else {
        mScanning = false;
        mBluetoothAdapter.stopLeScan(mLeScanCallback);
    }
    invalidateOptionsMenu();
}

1 个答案:

答案 0 :(得分:0)

最后它在AOSP Lollipop中运行良好。本课题已经结束