我正在尝试开发一种能够检测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
。
我已经从每个班级中获取了我认为与此相关的部分代码。如果需要,我会提供对这种情况很重要的代码。请有人帮我解决这个问题!
答案 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值。它来自我使用的示例代码。的工作原理。