1

我在 Android 4.4、5 和 6 中一直面临这个问题。

我正在执行 BLE 蓝牙设备扫描,之后我可以访问它们的地址 (getAddress()) 和其他数据。但是如果我调用 device.getName() 它每次都返回 null。

该文档没有帮助,它只说如果“出现问题”则返回 null:https://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#getName()

我访问失败的其他帖子:

https://code.google.com/p/android/issues/detail?id=34411

android BluetoothDevice.getName() 返回 null

ble 设备 bluetoothdevice.getname() 返回 null

PS:我在 Android API 级别 21+ 中使用不推荐使用的方法,所以这与问题无关。

知道这里可能出了什么问题吗?

4

2 回答 2

1

可能是您的 BLE 设备没有广播名称。广播有效载荷限制为 31 个字节,一些制造商为了节省空间而省略了名称。

于 2016-08-05T15:35:58.047 回答
1

我不再使用 getName() 了,因为当它返回一个真实的名字(如果是这样的话,这个缓存的名字有多大?)并且它为空时,它似乎是未定义的。只需解析广告数据中的 scanRecord 并从那里获取名称或读取 GATT DB 中的名称特征(如果您已连接)。

于 2016-08-05T18:37:26.040 回答