After some delays and fine-tuning of the release, next version of Gadgetbridge is now out with whole lot of changes. Interestingly, it is not 0.71 but already 0.71.3 as of the writing of this blog post.
Initial support for Amazfit GTR 3 and SuperCars (Shell Racing Cars)
Initial support for Amazfit GTR 3 was added, which is very similar to GTS 3, and Mi Band 7 see the wiki page here for more information.
@vanous has added support for an entirely new class of devices - a Bluetooth remote controlled car models! If you own a Shell Racing Car, please give it a try ;)
Bye-bye Android 4.4 (KitKat)
Like we announced in our last blog post, Android 5.0 is now the minimum requirement for Gadgetbridge. This allowed us to clean up some code and ugly workarounds. Even the F-Droid client no longer supports Android 4.4, and we were not aware of users who are still on KitKat. Time to move on!
@ashimokawa has ported the ECDH C library to pure java, a very straight-forward and simple port, basically fighting with the absence of pointers and unsigned integers was the only real work to do.
No NDK means faster build times and less build dependencies - also for our CI. Last but not least it also makes reproducible builds easier - we are probably already (almost?) there.
Device support improvements
@joserebelo continued with his quest to implement first class support for Zepp OS based devices (MiBand 7, Amazfit GTR 3, GTS 3...) with their activities, sleep and workouts fetching, firmware updates and more.
The Bangle.js team has been improving the Bangle.js device support and capabilities and added the ability to start services via intents, or to wake and unlock the Android device.
Huami devices (MiBands and Amazfits) can now choose whether device preferences as set in Gadgetbridge should be sent to the device on start of each connection which until now has been the case. This new setting can allow to have a watch or a band be configured in the original vendor's app and then connect it to Gadgetbridge, without overwriting settings in the device during the connection. Many other improvements have been added - like improved "Find device", which is now not dependent on the "Do not disturb" setting.
Fossil HR, InfiniTime, Flipper Zero, Mi Band 6... have also gained several improvements, see change log below. Many thanks to @arjan5, @Ganblejs, @dakhnod, @gfwilliams and others for all the contributions!
General app improvements
We have fixed several crashes. One, when opening Gadgetbridge from the notifications and another crash on some older Android versions.
More automation is now possible thanks to new Intents which allow to set device settings or can send information about a device being connected/disconnected. See a dedicated Wiki page for the Intent API.
These have been just the highlights, see more details below.
Many thanks to everyone for their contributions and support!
For all user-facing changes of this release, check the following list:
- Fossil/Skagen Hybrids: Update known watch app versions
- Skagen Hybrids: Allow firmware installation
- Fossil Hybrid HR: Request menu config upon app connection
- Amazfit GTS3: Fix crash when fetching workouts
- Zepp OS: Fix fetching workouts shorter than 1 minute
- Zepp OS: Decode workout elevation and altitude
- Huami: Do not crash when failing to parse activity summary
- Re-connect after update, especially useful for users of nightly releases
- Make number of not scrollable sleep sessions lines configurable
- Zepp OS: Display HR zones and Training Effect in Activity Details
- Remove shortcut feature due to non-free dependencies (#2918)
- Try to exclude non-free stuff from shortcuts library (#2918)
- SuperCars: fix periodicDataSender, add tricks
- Zepp OS: Fix crash when user attempts to disable Settings display item
- Fix crash when opening Gadgetbridge from the notification
- Remove KitKat support, Gadgetbridge now requires Android 5.0
- Initial support for Amazfit GTR 3
- Initial support for SuperCars (Shell Racing Cars)
- Huami: Add preference to overwrite band settings on connection
- Huami: Fix crash when selecting automatic Always On Display
- Huami: Set OpenTracks track category and icon
- Huami: Implement proper find device
- Huami: Change default find band vibration pattern
- Flipper Zero: added duration to Intent API
- Flipper Zero: fixed crash due to unregistered boradcast receiver
- Flipper Zero: fetch firmware version from flipper
- Fossil Hybrid HR: Correctly initialize watchface after reset or crash
- Fossil Hybrid HR: Set OpenTracks track category and icon to workout type selected on watch
- Fossil Hybrid HR: Allow flick_away as custom event and add move_hands event
- InfiniTime: Add weather support
- Amazfit Neo: Fix world clock
- Amazfit Neo: Fix long caller name display
- Amazfit Neo: Remove activity tracks (unsupported)
- Amazfit GTS 3: Fix battery drain due to unanswered weather requests
- Mi Band 7: Fix Weather
- Mi Band 6: Add support for workout activity types
- Mi Band 6: Enable adding workout activity types to the "more" section
- Amazfit GTR: Enable button actions
- Zepp OS: Implement activity, sleep and workout fetching
- Zepp OS: Improve firmware upgrades
- Bangle.js: Add PATCH HTTP request type, and fix for VolleyError UnsupportedOperationException when supplying custom headers.
- Bangle.js: Add ability to start services on the Android device via intents.
- Bangle.js: Flags and multiple categories can now be specified for intents initiated on the watch.
- Bangle.js: Add ability to wake and unlock the Android device via a special intent.
- Allow 3rd party apps to set device settings
- Re-implement C code in Java and remove Android NDK dependency entirely
- Fix crashes on older Android versions when using some devices
- Add support for REM sleep
- App shortcuts support (long press on the launcher icon for directly connecting a device)