我在Android Studio中实现BLE。我已经连接外围设备了。在我的onServicesDiscovered方法中,我想分析服务(和特性),当我打印出来时,我得到类似下面的内容:
android.bluetooth.BluetoothGattService@41b6dd18
列表中有4个服务,除了最后的数字外,它们看起来都很相似。如何将其转换为有用的信息。我没有看到这种格式的参考。
感谢。
答案 0 :(得分:1)
尝试从BluetoothGattService对象中读取uuid。
您可以在Bluetooth SIG website找到标准服务的uuid。如果uuid不在那里(即定制服务),您应该阅读外围设备的手册或联系外围设备制造商。
答案 1 :(得分:1)
这取决于您认为“有用”的信息。
BLE的工作方式大多类似于字典,您可以在其中查找长数字(特征)并获取二进制数据,因此,如果没有关于您正在处理的设备的先验信息,您在发现服务时就看不到多少。
也就是说,在the BLE docs中,有一个方法displayGattServices()
将发现的服务信息放在ExpandableListView中,在这里我改变了它来将服务和特性的UUID打印到logcat。 / p>
除了UUID之外,您还可以使用getProperties()查找其他特征属性(如特征数据的格式),或getPermissions()以查看是否可以读取或写入特征。
// Demonstrates how to iterate through the supported GATT
// Services/Characteristics.
private void displayGattServices(List<BluetoothGattService> gattServices) {
final String TAG = "BleServiceInfo";
if (gattServices == null) return;
String uuid;
String unknownServiceString = "Unknown service"
String unknownCharaString = "Unknown characteristic"
// Loops through available GATT Services.
for (BluetoothGattService gattService : gattServices) {
Log.d(TAG, "Service: " + gattService.getUuid().toString());
// Loops through available Characteristics.
for (BluetoothGattCharacteristic gattCharacteristic : gattCharacteristics) {
Log.d(TAG, "\tCharacteristic: " + gattCharacteristic.getUuid().toString());
}
}
}
从onServicesDisccovered()
调用此方法,如下所示:
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
....
displayGattServices(gatt.getServices());
}