7d1de4a5e8
This also touches parts of the app not only used for bangle.js. E.g. pending intents gets new flags from SDK 23 inclusive. Bluetooth permissions are updated to work on SDK 31. Permission handling is updated to the new way for doing it with introduction of a new function. This is called for newer sdk versions. bump Bangle.js flavor targetSdkVersion to 31 update comments re SDK 31 set the 'exported=true' I introduced to false instead - except for three places add uses-permission for handling bluetooth in order to work on api >30 add if-blocks adding FLAG_IMMUTABLE to PendingIntents on api >30 add link to bluetooth documentation Add comment to banglejs manifest. Add requirement annotation to ControlCenterv bump compileSdkVersion to 31 add "OpenAppSettings" permission popup while working out individual permission popups on android 13 if SDK < 31 do permissions one by one, else send user to app info page to switch permissions manually working solution, but needs cleaning do some cleaning, not done though remove some logging remove import Log tweak and remove toasts in new permissions handling Change conditions `> Build.VERSION_CODES.Q` to `>= Build.VERSION_CODES.R` matching the style used everywhere else Revert "Change conditions `> Build.VERSION_CODES.Q` to `>= Build.VERSION_CODES.R` matching the style used everywhere else" This reverts commit 2929629ff43fbb685eb3d15e42459f321f68fa11. Revert "add if-blocks adding FLAG_IMMUTABLE to PendingIntents on api >30" This reverts commit ed8e1df7bb8b71fee745fbf9d10747d47c8f6cb8. Pending intents gets `PendingIntent.FLAG_IMMUTABLE` if `(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)`. Bangle.js: undo `@RequiresApi` code R ... to remove error in Android Studio where declared required api was higher then minSDK version. Use FLAG_MUTABLE for reply to test notification This should fix Gadgetbridge crashing when replying to the test notification from the debug activity. As reported here: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2924#issuecomment-917282 Change to use FLAG_IMMUTABLE/_MUTABLE from SDK 23 ... as suggested by Android Studio. This is supposed to make the app more secure by not allowing certain changes to pending intents where they are not expected. If I understood correctly. Add PendingIntentUtils class to manage mutability |
||
---|---|---|
.gitea | ||
.idea/dictionaries | ||
.settings | ||
.woodpecker | ||
app | ||
config | ||
external | ||
GBDaoGenerator | ||
gradle/wrapper | ||
src | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
build.gradle | ||
CHANGELOG.md | ||
CONTRIBUTORS.rst | ||
FEATURES.md | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
LICENSE.artwork | ||
README.md | ||
settings.gradle |
Gadgetbridge is now hosted on codeberg.org.
Gadgetbridge
Gadgetbridge is an Android (5.0+) application which will allow you to use your Pebble, Mi Band, Amazfit Bip and HPlus device (and more) without the vendor's closed source application and without the need to create an account and transmit any of your data to the vendor's servers.
Homepage - Blog - Wiki - Mastodon
Code Licenses
- Gadgetbrige is licensed under the AGPLv3
- Files in app/src/main/java/net/osmand/ and app/src/main/aidl/net/osmand/ are licensed under the GPLv3 by OsmAnd BV
Download
Supported Devices
(WARNING: Some of them WIP and some of them without maintainer)
-
Amazfit
-
BFH-16
-
- Casio GB-X6900B
- Casio GB-6900B
- Casio GB-5600B
- Casio STB-1000
- Casio GBX-100
- Casio GBD-100
- Casio GBD-200
- Casio GBD-H1000
-
Fossil
-
ID115
-
JYou Y5
-
Lefun
-
Lenovo
- Watch 9
- Watch X (Plus)
-
Liveview
-
Makibes HR3
-
Mi
- Band, Band 1A, Band 1S, Band 2, Band 3
- Band 4, Band 5, Band 6 [!]
- Xiaomi Smart Band 7 [!]
- Scale 2 (Currently only displays a toast after stepping on the scale)
-
NO.1 F1
-
Pebble
-
PineTime (InfiniTime Firmware)
-
Roidmi, Roidmi 3, Mojietu 3 (Bluetooth FM Transmitters)
-
SMA Q2 (SMA-Q2-OSS Firmware)
-
- LinkBuds S
- WH-1000XM2, WH-1000XM3, WH-1000XM4, WH-1000XM5
- WF-SP800N
- WF-1000XM3, WF-1000XM4
-
Teclast H10, H30
-
TLW64
-
Vibratissimo (Experimental)
-
Wasp-OS devices
-
XWatch (Affordable Chinese Casio-like smartwatches)
-
Shell Racing cars (BLE RC car models)
-
Flipper Zero (Multi-tool Device for Geeks)
-
VESC (BLDC controller VESC)
-
UM25 (USB Voltage meter)
Special Pairing Procedures
Some Huami / Amazfit / Mi / Zepp devices can only be paired with Gadgetbridge using a secret key that has to be obtained once using the proprietary app with an account. Detailed instructions in the wiki: Huami Server Pairing
The Fossil Hybrid HR also requires using the proprietary app, but with a more complicated procedure. Details in the wiki: Hybrid HR.
Features
Please see FEATURES.md
Authors
Core Team (in order of first code contribution)
- Andreas Shimokawa
- Carsten Pfeiffer
- Daniele Gobbetti
- Petr Vaněk
Additional contributors
- João Paulo Barraca (HPlus)
- Vitaly Svyastyn (NO.1 F1)
- Sami Alaoui (Teclast H30)
- "ladbsoft" (XWatch)
- Sebastian Kranz (ZeTime)
- Vadim Kaushan (ID115)
- "maxirnilian" (Lenovo Watch 9)
- "ksiwczynski", "mkusnierz", "mamutcho" (Lenovo Watch X Plus)
- Andreas Böhler (Casio)
- Jean-François Greffier (Mi Scale 2)
- Johannes Schmitt (BFH-16)
- Lukas Schwichtenberg (Makibes HR3)
- Daniel Dakhno (Fossil Q Hybrid, Fossil Hybrid HR)
- Gordon Williams (Bangle.js)
- Pavel Elagin (JYou Y5)
- Taavi Eomäe (iTag)
- Erik Bloß (TLW64)
- Yukai Li (Lefun)
- José Rebelo (Roidmi, Sony Headphones, Miband 7)
- Arjan Schrijver (Fossil Hybrid HR watchfaces)
Contribute
Contributions are welcome, be it feedback, bug reports, documentation, translation, research or code. Feel free to work on any of the open issues; just leave a comment that you're working on one to avoid duplicated work.
Developer documentation - Support for a new Device - New Device Tutorial
Translations can be contributed via https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/
Community
If you would like to get in touch with other Gadgetbridge users and developers outside of Codeberg, you can do so via:
- Matrix:
#gadgetbridge:matrix.org
Do you have further questions or feedback?
Feel free to open an issue on our issue tracker, but please:
- do not use the issue tracker as a forum, do not ask for ETAs and read the issue conversation before posting
- use the search functionality to ensure that your question wasn't already answered. Don't forget to check the closed issues as well!
- remember that this is a community project, people are contributing in their free time because they like doing so: don't take the fun away! Be kind and constructive.
- Do not ask for help regarding your own projects, unless they are Gadgetbridge related
Having problems?
- Phone crashing during device discovery? Disable Privacy Guard (or similarly named functionality) during discovery.
- Open Gadgetbridge's settings and check the option to write log files
- Reproduce the problem you encountered
- Check the logfile at /sdcard/Android/data/nodomain.freeyourgadget.gadgetbridge/files/gadgetbridge.log
- File an issue at https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/new/choose and possibly provide the logfile
Alternatively you may use the standard logcat functionality to access the log.