Одно из моих приложений работает как периферийное устройство Bluetooth, я добавляю одну пользовательскую службу и 3 характеристики. Мое клиентское приложение после подключения к периферийному устройству обнаруживает его службы, но UUID моей службы различается у разных клиентов. Одно из моих устройств Samsung прекрасно возвращает UUID, которое я добавил при рекламе своей услуги, в то время как другое устройство показывает другой UUID. Пока я проверяю характеристики внутри сервиса, если UUID сервиса не совпадает, но удивительно, что все характеристики внутри сервиса. Но сервис UUID - это не то, что я добавил в свой сервис.
Вот мой код, который обнаруживает услуги
if(newState == BluetoothProfile.STATE_CONNECTED) {
isConnected =true;
Log.i(BluetoothClientActivity.class.getSimpleName(),
"Connected to GATT server.");
// Attempts to discover services after successful connection.
Log.i(BluetoothClientActivity.class.getSimpleName(),
"Attempting to start service discovery:");
gatt.discoverServices();
}
Пример кода добавления пользовательской службы с тремя характеристиками
UUID PRIMARY_SERVICE = UUID.fromString("145d6dba-7064-11ea-bc55-0242ac130003");
mSampleService = new BluetoothGattService(PRIMARY_SERVICE, BluetoothGattService.SERVICE_TYPE_PRIMARY);
mSampleService.addCharacteristic(characteristic1);
mSampleService.addCharacteristic(characteristic2);
mSampleService.addCharacteristic(characteristic3);
есть ли способ идентифицировать мой сервис и характеристики внутри, которые можно использовать для связи между сервером и клиентом.
List<BluetoothGattService> services = gatt.getServices();
for(Service service:services){
if(service.getUuid().toString().equals(SERVICE_UUID_STRING)){
Log.e(TAG,"Found");
}else{
Log.e(TAG,"Not Found");
}
}