Commit Graph
258 Commits
Author SHA1 Message Date
Gideon ZenzandJosé Rebelo aea638d4be Adding HealthConnect sync for:
Body Temperature
    Skin Temperature
    Distance
    Exercise
    Heart rate
    Heart rate variability
    Oxygen saturation
    Sleep
    Steps
    Total calories burned
    VO2 max
    Weight

The feature is configurable via Settings->External Integrations->Health Connect

Based on https://codeberg.org/LLan/Gadgetbridge

Kudos to LLan for the preliminary work!
2026-01-03 15:03:21 +01:00
Daniele Gobbetti 11ca07451a Add Lifecycle observer to GBApplication
Support classes can now react to application being in foreground/background.

Also adds support for sending app status to garmin devices.
2026-01-03 08:56:25 +01:00
José Rebelo 4443b94730 Improve Gadgetbridge restart
- Close the database
- Ensure we go back to the start activity
2026-01-01 10:13:06 +00:00
José Rebelo ad1e0c5589 Revamp Debug activity 2025-12-26 20:02:37 +00:00
Arjan SchrijverandArjan Schrijver 3b1eda31a6 Check for INTERNET permission instead of our own manifest 2025-12-25 14:45:08 +01:00
Arjan SchrijverandArjan Schrijver 20652f2b05 Improve internet access checking logic 2025-12-25 14:45:08 +01:00
Arjan SchrijverandArjan Schrijver 528bb8d362 Take direct internet access into account 2025-12-25 14:45:08 +01:00
Andreas Shimokawa 75035f26c3 Pebble: Remove firmware 1.x and 2.x support
All pebbles ever released support Firmware >=3.x
And it got really old by now
2025-10-31 13:58:28 +01:00
Andreas Shimokawa 9f751725e9 remove unneccessary checks for Android M 2025-10-30 22:12:47 +01:00
José RebeloandJosé Rebelo ded65032cd Add setting to force legacy GATT 2025-09-27 19:52:12 +02:00
José Rebelo a395e8d7e7 Remove redundant checks for sdk 23 2025-09-26 19:11:34 +01:00
José Rebelo 78cd3262f2 Fix crash on "About you" page 2025-09-05 23:29:18 +01:00
José Rebelo 243ef19606 Fix crash on "About you" page
Number EditText preferences must still be persisted as strings.
2025-09-01 22:57:34 +01:00
Thomas Kuehne eba83f93ad change daily sleep goal from hours to minutes (#1312) 2025-08-31 10:27:24 +02:00
José RebeloandJosé Rebelo 2ecc845a74 Introduce automatic zip export 2025-08-15 20:35:01 +02:00
Thomas Kuehne 32204ce606 debug: enable sharing an existing log file even if file logging is currently disabled (#4659) 2025-08-12 21:12:36 +02:00
José Rebelo 2e6f60d91b Garmin: Reverse training load support in coordinators
Having the default be "true" is better for newer devices which likely
support it, and so we disable it on the ones that we know do not support
it.
2025-08-02 23:53:53 +01:00
ad0zandJosé Rebelo e6ae499230 Workout load: fragment init 2025-08-03 00:42:20 +02:00
José Rebelo f346de0cfb Fix tests 2025-08-01 21:49:55 +01:00
Thomas KuehneandJosé Rebelo bba747cb6c ui: optionally prevent screen shots and insecure displays (#5166)
Introduce new Settings / User interface / Screenshots to optionally prevent screenshots and viewing on non-secure displays.
Toggling this setting requires a GB restart to become fully effective.
2025-07-29 20:57:27 +02:00
Daniele GobbettiandJosé Rebelo 9111676bb2 Add JvmStatic annotations to static kotlin methods of weather classes 2025-07-20 11:50:56 +02:00
Daniele GobbettiandJosé Rebelo 9aaa582331 Move weather model classes to own package 2025-07-20 11:50:56 +02:00
Daniele GobbettiandJosé Rebelo 5b35bbba8f Rewrite Weather class in Kotlin and extract cache handling and mapping methods
Cache Handling and static mapping methods are extracted to new classes

Also adds test for weather mapping and moves legacy Weather class there to ensure the conversion to kotlin did not introduce errors
2025-07-20 11:50:56 +02:00
Daniele Gobbetti f78d59d6d4 Deprecate NotificationCollectorMonitorService
Don't start the foreground NotificationCollectorMonitorService unless enabled in the deprecated settings.

The notification service seems to be reliably kept alive by the OS without this workaround, and having a second foreground service is causing a second persistent notification for some users.
2025-07-16 17:22:07 +02:00
José Rebelo 1db728b400 Force upper-case preferences for device settings 2025-07-10 21:12:17 +01:00
Daniele Gobbetti 99a05742ff Start NotificationCollectorMonitorService as foreground service 2025-07-07 08:37:13 +02:00
José Rebelo 0996b5d810 BtBRQueue: Fix unit tests
Regression in the tests introduced by 891655504

These should be refactored, as they can become quite flaky due to the
mocks.
2025-07-06 15:50:04 +01:00
Thomas KuehneandJosé Rebelo 83db1c98ff logging: use Runtime.addShutdownHook to flush the log
This should have a better chance to write the last log lines than doing it in UncaughtExceptionHandler.
2025-07-04 10:49:40 +02:00
Thomas KuehneandJosé Rebelo 071c7529ba use Build.VERSION_CODES instead of magic numbers
The available codes only depend on compileSdk.
minSdk and targetSdk are not relevant.
2025-06-29 16:32:27 +02:00
Thomas KuehneandJosé Rebelo 4723115356 enable StrictMode with penalty log for debug builds (#5022) 2025-06-29 14:26:32 +02:00
Thomas KuehneandJosé Rebelo fcd4ac30be ble: introduce CompanionDeviceService to elevate process priority 2025-06-22 12:48:01 +02:00
Thomas Kuehne b990746e8e fix: #4952 - Call requires API level 35: java.lang.CharSequence#isEmpty 2025-06-15 08:58:06 +02:00
Thomas KuehneandJosé Rebelo 2a38a9e9b7 weaken core parameter types to the actually required type
When possible use CharSequence, Collection and Iterable for method parameters and function parameters instead of more specific types.
2025-06-14 23:02:34 +02:00
Thomas KuehneandJosé Rebelo a83026b180 ble: BluetoothDevice.getAlias replaced getAliasName in Android 11 2025-05-17 14:52:14 +00:00
Thomas KuehneandJosé Rebelo 742d5d96ab log more failure details in WriteAction when running on Tiramisu or higher 2025-05-01 13:35:39 +00:00
Daniele Gobbetti 853bdd58ab Add OS battery level to DeviceCoordinator and BluetoothStateChangeReceiver
Add OS Battery Level detection to BluetoothStateChangeReceiver, pass the event to devices only if their coordinator class declares support for it.
Add supportsOSBatteryLevel() to DeviceCoordinator and AbstractDeviceCoordinator defaulting to false.

Change coordinator of GenericHeadphones to return true for supportsOSBatteryLevel() and remove specific BroadcastReceiver from the support class.
2025-04-16 08:49:33 +02:00
José Rebelo a2a7c4fe48 Lenovo Watch X (Plus): Fix language setting 2025-03-30 11:33:26 +01:00
DaisyandJosé Rebelo 624dc77bce fix: the logic for isOutsideNotificationTimes
It was reversed before.
2025-01-21 21:04:27 +00:00
José Rebelo aead5343a4 Migrate standing time to hours
Even though it said "minutes", all devices that use this preference
(Xiaomi-protobuf and Zepp OS), get the raw value, and they expect it to
be in hours.
2025-01-17 19:14:31 +00:00
José Rebelo 962484b8c9 Garmin: Enable calendar sync for existing devices
Following d39798dd5, this ensures calendar continues syncing for
existing users.
2024-12-23 18:36:31 +00:00
a0zandJosé Rebelo 53ccae347d Respiratory rate: remove unused string, fix disappearing tabs bug 2024-12-01 13:06:25 +00:00
a0zandJosé Rebelo a11f6871cd Respiratory rate: fix strings, margins, missing data on chart 2024-12-01 13:06:25 +00:00
a0zandJosé Rebelo 9ae56ae88c Respiratory rate: init 2024-12-01 13:06:25 +00:00
José Rebelo 4cf076b3fa Fix edge case where chart tabs were reset to single value on debug build 2024-11-24 21:33:36 +00:00
Arjan Schrijver 765e6950dc Add preference migration for existing users 2024-11-24 21:14:23 +01:00
José Rebelo e54b7959a4 Calories: Cleanup and fix some inconsistencies 2024-11-24 16:55:25 +00:00
a0zandJosé Rebelo 622d37ed38 Calories: add fragment 2024-11-24 16:50:51 +00:00
José Rebelo e25757846f Add link to background service troubleshoot page 2024-10-22 22:18:17 +01:00
José Rebelo 19f04e1867 Show notification on crash for debug builds 2024-09-29 13:44:40 +01:00
José Rebelo 71575c8083 Add all languages supported in weblate 2024-09-22 11:16:40 +01:00