概述
前段时间,一直在研究关于数据的传递方面的,后来否定了要用这些东西,而只是对于rssi的读写,以及BLE之间距离的判断,故,我把这几天的一些了解给写上,方便以后的,温故知新把,其实也没什么技术含量的东西。
原归正传,获取RSSI 无非就两种方法,一是在扫描回调时读取,二是在BLE连接之后读取,两种方法都比较简单,关键在于对蓝牙BLE的认识。
那我首先就介绍下在 扫描回调时怎么去读。
因为通常情况下,我们扫描时的设备及信息都是放在界面上,我就拿这个来说吧,
以呈现在列表上为例,首先 适配器的创建
在创建适配器的时候,要加入 addDevice()方法
public ArrayList<BluetoothDevice> mLeDevices;
private LayoutInflater mInflator;
private ArrayList<Integer> mRSSIs;
private ArrayList<byte[]> mRecords;
public MyAdapter() {
super();
mLeDevices = new ArrayList<BluetoothDevice>();
mRSSIs = new ArrayList<Integer>();
mRecords = new ArrayList<byte[]>();
mInflator = MainActivity.this.getLayoutInflater();
}
public void addDevice(BluetoothDevice device,int rssi,byte[] scanRecord) {
if (!mLeDevices.contains(device)) {
if (mScanning) {
mLeDevices.add(device);
mRSSIs.add(rssi);
mRecords.add(scanRecord);
}
}
}
在getView里面添加如下(我的测试的,根据每个人的XML文件不同而适当修改)
ViewHolder holder;
if (convertView == null) {
Log.i("null", " " + position);
holder = new ViewHolder();
convertView = mInflator.inflate(R.layout.item, null);
holder.deviceName = (TextView) convertView
.findViewById(R.id.deviceName);
holder.deviceAddress = (TextView) convertView
.findViewById(R.id.deviceMac);
holder.deviceRssi = (TextView)convertView.findViewById(R.id.deviceRssi);
convertView.setTag(holder);
} else {
Log.i("not-null", " " + position);
holder = (ViewHolder) convertView.getTag();
}
BluetoothDevice device = mLeDevices.get(position);
int rssi = mRSSIs.get(position);
String rssiString = (rssi == 0) ? "N/A" :"RSSI:"+ rssi + " db";
final String deviceName = "设备名称:"+device.getName();
if (deviceName != null && deviceName.length() > 0)
holder.deviceName.setText(deviceName);
holder.deviceAddress.setText("MAC:"+device.getAddress());
holder.deviceRssi.setText(rssiString);
return convertView;
}
private class ViewHolder {
TextView deviceName;
TextView deviceAddress;
TextView deviceRssi;
}
最后 在回调方法中添加如下
myAdapter.addDevice(device,rssi,scanRecord);
myAdapter.notifyDataSetChanged();
关键代码给出,大家自行添加修改
最后
以上就是负责雪糕为你收集整理的Android蓝牙BLE之RSSI数据的读写(1)的全部内容,希望文章能够帮你解决Android蓝牙BLE之RSSI数据的读写(1)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复