BluetoothDevice始终在getName()上返回null

时间:2016-08-05 15:24:06

标签: android bluetooth bluetooth-lowenergy android-bluetooth android-ble

我在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() return null

ble device bluetoothdevice.getname() returns null

PS:我在Android API 21+级中使用了不推荐使用的方法,因此与此问题无关。

关于这里可能出现什么问题的任何想法?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我不再使用getName(),因为它在返回实名时似乎是未定义的(如果这样,这个缓存的名称有多大?)以及何时为null。只需解析广告数据中的scanRecord并从那里获取名称,或者如果已连接,则读取GATT数据库中的名称特征。