我有一个项目,正在扫描运行在BLE上的信标。
我可以扫描信标并将它们列在一个很好的自定义ListView
中。然而,检索他们的名字似乎不起作用。
在我的OnLeScan
回调中,我使用device.getName()
,这似乎总是返回null?
此外,当我试图解析ScanRecord byte[]数组的数据与这篇文章一致-我仍然没有太多的运气。有什么想法/建议?
我应该从BluetoothDevice
类检索本地名称吗?我应该从解析ScanRecord/ScanResult
类中检索它吗?
我的onLeScan是这样的:
public void onLeScan(final BluetoothDevice device, int rssi, final byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.v(device.getName(),device.getName());
mLeDeviceListAdapter.addDevice(device);
mLeDeviceListAdapter.notifyDataSetChanged();
}
}
});
}
编辑:我尝试对链接帖子中的代码进行一些修改。根据评论中的建议,添加一个case 0x08:。然而,我的ListView仍然将所有找到的设备列为"未知设备"。默认情况下,将不检索友好名称。
查看iBeacon广告数据包的详细信息。没有名字
官方规格只能通过苹果的MFi程序获得。