如何检测BLE RSSI值?

时间:2014-03-05 12:57:53

标签: android listview bluetooth-lowenergy

我正在尝试开发一种能够检测BLE信号并显示其RSSI值的应用程序(除了其他参数)。从现在开始,我能够检测到BLE并将其列在ListView中,但是当我检测到参数RSSI时,我仍然坚持如何将参数RSSI传递给我为{{1}开发的BaseAdapter }}

这是我用来检测BLE设备的代码:

ListView

这是addDevice代码,它在另一个类中实现,它是上面的代码:

// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
    new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
            addDevice(device);
        }
    };

最后,这是我用于protected synchronized void addDevice(final BluetoothDevice device) { runOnUiThread(new Runnable() { @Override public void run() { mLeDeviceListAdapter.addDevice(device); mLeDeviceListAdapter.notifyDataSetChanged(); } }); } 的{​​{1}}:

BaseAdapter

“rssivalue”是我将用来显示RSSI的ListView

我已经从每个班级中获取了我认为与此相关的部分代码。如果需要,我会提供对这种情况很重要的代码。请有人帮我解决这个问题!

1 个答案:

答案 0 :(得分:1)

LeScanCallback添加rssi值:

private BluetoothAdapter.LeScanCallback mLeScanCallback =
    new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
             yourBleAdapter.addDevice(device, rssi);
        }
    };  

在你的适配器中,这变为:

public void addDevice(BluetoothDevice device, int rssi) {
       //get device and its rssi locally here
    }

你从哪里获得rssi值。它来自我使用的示例代码。的工作原理。