我在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+级中使用了不推荐使用的方法,因此与此问题无关。
关于这里可能出现什么问题的任何想法?
答案 0 :(得分:1)
可能是您的BLE设备没有广播名称。广播有效载荷限制为31个字节,一些制造商省略了名称以节省空间。
答案 1 :(得分:1)
我不再使用getName(),因为它在返回实名时似乎是未定义的(如果这样,这个缓存的名称有多大?)以及何时为null。只需解析广告数据中的scanRecord并从那里获取名称,或者如果已连接,则读取GATT数据库中的名称特征。