BLE 设备名称无法恢复

BLE Device Name irretrievable

我有一个项目正在扫描 运行 BLE 上的信标。

我可以扫描信标并将它们列在一个很好的自定义 ListView 中就好了。但是检索他们的名字似乎不起作用。

在我的 OnLeScan 回调中,我使用 device.getName() 似乎总是返回 null?

此外,当我尝试解析 ScanRecord byte[] 数组以获取与 this post 一致的数据时 - 我仍然运气不佳。任何 ideas/tips?

我应该从 BluetoothDevice class 中检索本地名称吗?我应该从解析 ScanRecord/ScanResult class 中检索它吗?

这是我的 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();
                        }


                    }
                });
            }

编辑:

我尝试对链接 post 中的代码进行一些修改。添加案例 0x08: 如评论中所建议。但是,我的 ListView 仍然默认将所有找到的设备列为“未知设备”,并且不会检索友好名称。

有关 iBeacon 广告数据包的细分,请参阅 this answer。没有名字。

官方规格只能通过 Apple 的 MFi 程序获得。