Как получить BluetoothGattCharacteristic тип значения типа?
При разработке приложения для IOT попытался установить связь с периферийным устройством BLE. Использование BLE Lollipop API.
Каждый BluetoothGattService может предоставлять различные BluetoothGattCharacteristic, каждый из которых представляет определенное значение, которое может быть «Чтение», «Запись» или «Уведомление».
Значение передается в различных форматах, Но нет способа узнать, в каком формате закодирована конкретная характеристика.
Я думал, что этот mKeySize может быть решением, но он не доступен и не используется внутри BluetoothGattCharacteristic для определения какого-либо значения вывода.
/**
* Returns the deisred key size.
* @hide
*/
/*package*/ int getKeySize() {
return mKeySize;
}
Я использовал следующие функции, чтобы проверить желаемый результат.
String getStringValue (int offset)
getIntValue(int formatType, int offset)
getFloatValue(int formatType, int offset)
Но они были полезны только в определенных случаях, когда передаваемые данные не были сложными, например
Имя устройства -> (getStringValue)
BatteryLevel -> (GetIntValue (BluetoothGattCharacteristic.FORMAT_UINT8,0))
Они были легкой приманкой, но такие характеристики, какПараметры периферийного предпочтительного соединения нигде не быть признанным.
Я уже использовал статическую хэш-карту для получения Имени спецификации на основе назначенного им номера, размер которого, кажется, увеличивается в размерах и включает в себя весь адаптированный профиль BLE.
Я хотел бы знать, есть ли лучшие методы, доступные для получения значения BluetoothGattCharacteristics надлежащим образом?
Кроме того, существуют разные способы записать характеристическое значение и в определенных местах конкретное значение, как я должен подходить к этой неопределенности?
Проверьте это приложение для AndroidBLEScanner, в значительной степени может выполнять чтение и запись.