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?
537 Views Asked by user2993539 At
1
There are 1 best solutions below
Related Questions in ANDROID
- Delay in loading Html Page(WebView) from assets folder in real android device
- MPAndroidChart method setWordWrapEnabled() not found
- Designing a 'new post' android activity
- Android :EditText inside ListView always update first item in the listview
- Android: Transferring Data via ContentIntent
- Wrong xml being inflated android
- AsyncTask Class
- Unable to receive extras in Android Intent
- Website zoomed out on Android default browser
- Square FloatingActionButton with Android Design Library
- Google Maps API Re-size
- Push toolbar content below statusbar
- Android FragmentPagerAdapter Circular listview
- Layout not shifting up when keyboard is open
- auDIO_OUTPUT_FLAG_FAST denied by client can't connect to localhost
Related Questions in BLUETOOTH-LOWENERGY
- How to read a characteristic (e.g. in WICED Smart example "speed_test")
- Android Wear Device as iBeacon
- How to get MAC Address of beacon when ranging and monitoring in iOS
- android - How to get a iBecon detection state when I kill app from Background?
- How to use core bluetooth framework to connect Headsets/handsfree?
- Android : auto connect to heartrate sensor ble
- bluetoothGatt writeCharacteristic returns false
- Android's BLE Service Discovery (BluetoothGatt#discoverServices()) and Low Energy vs BR/EDR
- How deploy an large number iBeacons
- Send a Android BLE GATT Notification
- burst notifications with Bluetooth Low Energy on Android
- How to share files with all other devices from my iOS device through application?
- Is it possible to create an app that when installed the user can easily turn Bluetooth/NFC ON and OFF by double clicking the Home button?
- Difference between attributes and services in BLE
- How do I use Meteor and a Cordova BLE plugin to connect to a BLE device
Related Questions in ANDROID-BLUETOOTH
- Bluetooth connection to Sphero is lost when smartphone "goes to sleep"
- Android's BLE Service Discovery (BluetoothGatt#discoverServices()) and Low Energy vs BR/EDR
- Bluetooth discovery not starting on first click
- Android - Issues with using Library Activity in another Application
- How to get connected Bluetooth device to App?
- Streaming audio between external bluetooth device and Android phone
- Android- Bluetooth: Bluetooth Service behaving unexpectedly
- Simulate user click in system activities with Android Espresso framework
- Check what kind of content represent received bytes
- Attempting to record mic input over Bluetooth
- android device.getUuids returns null
- Bluetooth pairing - how to show the simple Cancel/Pair dialog?
- No Bluetooth gatt callback on some devices
- Bluetooth GATT onConnectionState Change does not work on Lollipop
- Bluetooth Secure Simple Pairing (SSP) using QR code as Out of Band (OOB) channel
Related Questions in BLUETOOTH-GATT
- Android BLE connecting to GATT service takes longer than expected
- How to keep ble android application running in background?
- Trying to connect to iOS via BLE + BT through Android device
- Does apple read the BLE device before they share the data with BLE devices?
- How do you build a BLE app when you don't have access to the official GATT XML files?
- Where to find BLE GATT specification xml in 2020?
- ArduinoBLE.h - multiple values in one characteristic
- Android Studio Wear Os application can't be installed INSTALL_PARSE_FAILED_NO_CERTIFICATES
- flutter_reactive_ble : how can I obtain serviceId, characteristicId, and deviceId
- Sniffing Xfinity Voice Remote Connection
- Raspberry Pi Bluetooth: Enable legacy pairing / connection without PIN input
- WebBluetooth GATT, filter by custom service UUID
- Simultaneous BLE GATT Client & Server issue on when client initiates disconnect
- BLE Cycle Trainer Write Characteristic UUID 2AD9 - How to adjust resistance based on what's happening in game?
- warning: [deprecation] getValue() in BluetoothGattCharacteristic has been deprecated in the code: byte[] countByte = characteristic.getValue();
Related Questions in ANDROID-BLE
- Android : auto connect to heartrate sensor ble
- bluetoothGatt writeCharacteristic returns false
- How can I use semaphore to do a correct android ble communication?
- Bluetooth GATT onConnectionState Change does not work on Lollipop
- Android BluetoothGatt not receving Characteristic Notifications BluetoothGatt#writeDescriptor(desc) return false
- What is the max concurrent Ble connections android M+ can have
- Which Android API issues Scan Request and Responses
- Why does a text box appear behind the Bluetooth permission dialog for my Android app?
- Android BLE Gatt Connection Issue (Connection Timeout Status:8)
- How to scan BLE devices that use Extended Advertisement and Coded PHY with Android?
- Creating a callbackFlow for BluetoothLeAdvertiser
- How to Bluetooth LE background connection?
- Delay in Android BLE StartScan returning a match
- Why Android BLE gatt callback method onCharacteristicChanged callback is called in lower rate in Wear OS device than on smartphone?
- How to implement a custom UUID for bluetooth broadcast
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)
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?
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: