I develop an application designed for Wear OS devices that received data using BLE as Gatt client. I set the mtu size the maximum possible (517 bytes), and need to transfer some large amount of data - so I set the connection priority to BluetoothGatt.CONNECTION_PRIORITY_HIGH and from the logs I see the interval is set to 5ms.
I tested my app on Suunto 7 and also on Galaxy S9+ to see the BLE speed on both watch and smartphone and found out that when I get notifications from the Gatt server device I see that on Suunto 7 the onCharacteristicChanged callback is called around every 50ms, while on Galaxy S9+ the onCharacteristicChanged callback is called around every 5ms.
What might cause this difference and how can I make the onCharacteristicChanged callback to be called more often on Wear OS devices?
if it matters - the Gatt server device is also an android app I develop using BluetoothGattServer class and I send the data using notifications and not indications.
Why Android BLE gatt callback method onCharacteristicChanged callback is called in lower rate in Wear OS device than on smartphone?
540 views Asked by user2993539 At
1
There are 1 answers
Related Questions in ANDROID
- Creating global Class holder
- Flutter + Dart: Editing name of a tab shows up a black screen
- android-pdf-viewer Received status code 401 from server: Unauthorized
- Sdk 34 WRITE_EXTERNAL_STORAGE not working
- ussd reader in Recket Native module
- Incorrect display of LinearGradientBrush in IOS
- The Binary Version Of its metadata is 1.8.0, expected Version is 1.6.0 build error
- I can't make TextInput to auto expand properly in Android
- Creating multiple instances of a class with different initializing values in Flutter
- How to create a lottie animation
- making android analyze with coverity sast tool
- Flutter plugin development android src not opening after opening example
- I initialize my ViewModel in the Activity with several fragments as tabs, but the fragments(tabs) return null for the updated livedata
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How I can use the shared preferences class?
Related Questions in BLUETOOTH-LOWENERGY
- How to receive Bluetooth value in Android app
- provision failed and giving null pointer exception in android using ESP provisioning Library
- Need the decoded data while from server esp32 send and Receiving in react native cli
- python script using bluetooth running on windows 11 vs raspberry pi4
- How to make sure only one client connect to the BLE server on ESP32?
- Samsung SM-A546E Bluetooth in background odd behaviour
- Android OnCharacteristicChanged - Continuous stream of bytes from Bluetooth Stethoscope
- ESP32 BLE Arduino And getting a compile error of 'ringbuf_type_t' has not been declared
- (corebluetooth didUpdateValueFor) data is not being sent properly between my peripheral arduino 33 nano and iOS app
- Constructing a script using a 3rd party library
- BLE SMP packets sniffing using scapy python
- Error in Bluetooth specification? Heading field of Location and Speed
- How to understand the Sensor Setting Property ID in the SIG Mesh model
- Problem with mapping of BLE 5.1 ATT protocol stack with winsock & winsock2 arcitechture
- Plot ecg graph in flutter
Related Questions in ANDROID-BLUETOOTH
- How to receive Bluetooth value in Android app
- Samsung SM-A546E Bluetooth in background odd behaviour
- How can i Set up a Bluetooth connection between my react-native expo app and HC-06
- Android: audioManager.communicationDevice returns TYPE_BUILTIN_EARPIECE on Android 14, even when bluetooth headset is connected
- Send play/pause music from my android car stereo to my connected phone
- How to listen to media session events of another app
- React Native Bluetooth Classic Reading Issue
- Flutter bluetooth low energy: custom characteristic and service
- Why do we get ERROR_GATT_WRITE_REQUEST_BUSY error while writing to characteristic if i enable notifications like in the below code?
- Does Android have an equivalent of iOS's Core Bluetooth canSendWriteWithoutResponse?
- Why do we get ERROR_GATT_WRITE_REQUEST_BUSY error while writing to characteristic?
- BLE on Android - Get UUID of nearby devices
- Omron BP Monitor Custom Service and Characteristics bluettooth
- Android Bluetooth Error: Socket failed (GPS iTag and android app)
- BLE - Facing Data Loss in Android Library(.aar) for Bluetooth Low Energy for Unity
Related Questions in BLUETOOTH-GATT
- Samsung SM-A546E Bluetooth in background odd behaviour
- How to deal with BlueZ bluetooth instability?
- STM32 BlueNRG GAP Central Device Name not Accessable
- Why do we get ERROR_GATT_WRITE_REQUEST_BUSY error while writing to characteristic if i enable notifications like in the below code?
- Add BLE descriptors using mbed os
- Add Report Reference Descriptor to characteristic in CoreBluetooth (BLE)
- Why do we get ERROR_GATT_WRITE_REQUEST_BUSY error while writing to characteristic?
- Omron BP Monitor Custom Service and Characteristics bluettooth
- Web Bluetooth API cannot find my device (Google Pixel 7 phone)
- BLE Omron BP Monitor has it's Custom Service and Characteristics
- BluetoothDevice#getName() return null in Android 14 while retrying pairing after canceling first pairing request
- Read Characteristic with MBED OS BLE GattClient
- With Bluetooth LE GATT service, is processing Characteristics and Descriptors sequentially an acceptable way to go?
- Does the BLE protocol guarantee write-ordering across multiple characteristics in a service?
- Receive simultaneous notifications for multiple characteristics from a single server
Related Questions in ANDROID-BLE
- Does Android have an equivalent of iOS's Core Bluetooth canSendWriteWithoutResponse?
- Uncaught exception thrown by finalizer for Bluetooth Reconnection in Android - java.io.IOException: socket not created
- How to Bluetooth LE background connection?
- Creating a callbackFlow for BluetoothLeAdvertiser
- How to scan BLE devices that use Extended Advertisement and Coded PHY with Android?
- Why is onCharacteristicChanged never called when it should be?
- Android BLE: GattCallback.onCharacteristicChanged is not triggered in response of a write operation on Android 12 and below
- Is it possible to know the maximum MTU size supported based on Android version?
- How to check if a BLE device is currently busy?
- writeDescriptor(BluetoothGattDescriptor!): Boolean' is deprecated. Deprecated in Java
- React Native Android 12 Permission, Ble cannot scan
- BLE's - onCharacteristicRead not invoked on calling readCharacteristic
- android 12: missing BLE serviceUUIDs
- BLE android read readCharacteristic
- How do I avoid requesting BLE scan response?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I think it's natural that you see the different delay in different device, because Galaxy S9+ has
5.0, A2DP, LEconnection feature but Suunto 7 is a small device with hardware limitations.but if you want to fix this and get data in the same delay, you can add 45ms delay when Galaxy S9+ connected. First, you should get the device name in
onCharacteristicChanged callback: