1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-27 23:40:31 +02:00
Commit Graph

4976 Commits

Author SHA1 Message Date
José Rebelo
eb2a2ca742 Mi Band 8: Display items (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
e8695a5792 Mi Band 8: Fix stress relaxation reminder 2023-11-25 21:16:33 +00:00
José Rebelo
54e31a1521 Mi Band 8: HR, SpO2, Stress settings (untested, wip) 2023-11-25 21:16:33 +00:00
José Rebelo
8a7e6649b7 Mi Band 8: Password (untested) 2023-11-25 21:16:33 +00:00
José Rebelo
8531cfb0a1 Mi Band 8: Start handling config changes 2023-11-25 21:16:33 +00:00
José Rebelo
e68d6dd7b7 Mi Band 8: Canned messages (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
fd76c7b13b Mi Band 8: Find phone 2023-11-25 21:16:33 +00:00
José Rebelo
b27c75c09a Mi Band 8: World clocks (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
28bd9eeed6 Mi Band 8: Fix heart rate one-shot measurements 2023-11-25 21:16:33 +00:00
José Rebelo
241486f7c3 Mi Band 8: Update to use getSupportedDeviceName 2023-11-25 21:16:33 +00:00
José Rebelo
4ede29d1f1 Mi Band 8: Toggle realtime stats (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
f23347c47d Mi Band 8: Add broken notifications 2023-11-25 21:16:33 +00:00
José Rebelo
290383627e Mi Band 8: Fix system service 2023-11-25 21:16:33 +00:00
José Rebelo
7af155281c Mi Band 8: Remove custom pairing activity
Does not seem to be needed (or work, actually)
2023-11-25 21:16:33 +00:00
José Rebelo
fda3b53657 Mi Band 8: Initial support (WIP) 2023-11-25 21:16:31 +00:00
Arjan Schrijver
fac566c7da Support selecting enabled navigation apps 2023-11-23 22:57:34 +01:00
Arjan Schrijver
70acf47a2e Make GMaps navigation handler follow the "navigation forwarding" setting 2023-11-23 22:37:24 +01:00
Arjan Schrijver
8add6c4da9 Autodetect OsmAnd package name and make it configurable 2023-11-23 22:33:12 +01:00
Davis Mosenkovs
2ef44e766e PineTime: Improve notification handling
* If setting enabled, add source application (or SMS)
* Fallback to using notification subject if body is unavailable
* Trim/cut sender or title at 25+ chars if necessary
* Better support for notifications without body or subject
2023-11-23 21:30:42 +00:00
Davis Mosenkovs
88d553771d PineTime: Honor Sync time setting on connect 2023-11-23 21:30:42 +00:00
Gordon Williams
66b36564ab Bangle.js: Attempt to fix some of the warnings generated by Android Studio - some addec null checks, and appending using StringBuilder 2023-11-20 11:42:41 +00:00
Gordon Williams
140c62ac55 Bangle.js: Fix #2996 - force a reconnect when rx/tx characteristics can't be found 2023-11-20 11:02:16 +00:00
Davis Mosenkovs
176e81f1c0 Display alias in low battery notification 2023-11-16 21:23:35 +00:00
Davis Mosenkovs
20850858d2 Mijia LYWSD02: Add low battery notification 2023-11-10 00:03:54 +02:00
José Rebelo
5abd46d7ba Amazfit T-Rex Ultra: Remove experimental 2023-11-09 21:52:14 +00:00
Gordon Williams
cb0962e0f6 Bangle.js: Ensure we split Chinese words every 2 chars when converting them to bitmaps to give us the opportunity to wrap text better
Also make sure we never create a bitmap >255 width/height as this wouldn't work on Espruino
2023-11-09 15:12:59 +00:00
Gordon Williams
f4707c15f4 Bangle.js - mention 'Android Integration' app for Bangle, not 'Gadgetbridge', add extra character conversions 2023-11-08 10:51:00 +00:00
Gordon Williams
1aadc04fd7 Bangle.js: add more non-ascii characters which can be converted to ASCII equivalents.
This helps for Chinese where words would normally break on these chars anyway - based on https://forum.espruino.com/conversations/391391
2023-11-06 14:42:24 +00:00
rany
340171e0bb Zepp OS: Fix sunrise and moon dates being off by local time + UTC offset
Fixes #3400

Signed-off-by: rany <ranygh@riseup.net>
2023-11-03 20:56:16 +00:00
José Rebelo
4c4e18560f Amazfit Bip 5: Remove experimental 2023-11-03 20:53:01 +00:00
Davis Mosenkovs
e6a0350197 Mijia LYWSD02: Fix battery drain on Mijia 2023-11-03 18:37:55 +00:00
Arjan Schrijver
3d543db24f Fossil/Skagen Hybrids: Update navigationApp to version 1.0 2023-11-02 16:33:21 +01:00
Martin.JM
c793453f16 Add blood oxygen graph 2023-10-29 20:43:46 +01:00
José Rebelo
0c47d12c0f Amazfit Active / Active Edge: Experimental support 2023-10-29 19:19:20 +00:00
Daniel Dakhno
eb0747b926 Device Management: centralized DeviceType resolution cache 2023-10-29 13:45:48 +00:00
José Rebelo
dc825c87e7 Extract device type migration to standalone function 2023-10-27 20:15:14 +01:00
Daniel Dakhno
c2a9f5d805 Device management: store deviceType name in DB 2023-10-27 19:14:49 +00:00
Daniele Gobbetti
0da552aa33 GenericWeatherReceiver: use forecast source for uvIndex and precipProbability 2023-10-27 19:01:10 +02:00
Arjan Schrijver
a0e6085324 Fossil/Skagen Hybrids: Allow configuring call rejection method 2023-10-20 10:50:25 +02:00
Arjan Schrijver
59dafc54b6 Fossil/Skagen Hybrids: Show device specific settings in more logical order 2023-10-18 22:39:13 +02:00
José Rebelo
f090898aef Zepp OS: Add statistics fetch operation
We do not know what they are or how to parse them, but syncing them
helps free up space from the band.
2023-10-18 16:17:41 +01:00
José Rebelo
5a65bbf8f4 Zepp OS: Add temperature fetch operation (no DB / UI) 2023-10-18 15:46:58 +01:00
José Rebelo
81501ef750 Mi Band 7: Whitelist firmware 2.1.0.1 2023-10-18 15:31:06 +01:00
Arjan Schrijver
88341c8b86 Fossil/Skagen Hybrids: Add new navigation app 2023-10-18 13:06:16 +00:00
Reiner Herrmann
4abde0766d Zepp OS: display swimming-related activity data 2023-10-16 23:35:10 +02:00
Maxime Reyrolle
1d3f9b6ec1 add items, shortcuts, cards and watchfaces from Amazfit Balance 2023-10-15 18:39:20 +02:00
Maxime Reyrolle
ff6d6f5e53 add initial support for Amazfit Balance 2023-10-15 13:41:53 +00:00
ahormann
28e673415f Support for Femometer Vinca 2 and HealthThermometerProfile (#3369)
Co-authored-by: ahormann <ahormann@gmx.net>
Co-committed-by: ahormann <ahormann@gmx.net>
2023-10-15 13:37:41 +00:00
José Rebelo
11de66f8e4 Fossil/Skagen Hybrids: Fix some preference crashes on the nightly 2023-10-14 21:33:24 +01:00
José Rebelo
7cbc6cb439 Do not flatten to ASCII if device supports unicode 2023-10-11 23:21:39 +01:00
Davis Mosenkovs
60f91a9f93 Support for COL Reminder notifications 2023-10-10 21:22:02 +00:00
TaaviE
6234359c69 Improved PineTime's weather support to reduce pathological memory usage 2023-10-10 20:46:17 +00:00
Davis Mosenkovs
03c25722b2 Improve Telegram notifications
* Display Telegram private chat notifications
* Display Telegram call notifications
2023-10-10 23:27:51 +03:00
Davis Mosenkovs
c4bc43d918 PineTime: Display app name for VoIP app calls 2023-10-10 20:03:44 +00:00
Davis Mosenkovs
5d15df0751 CallSpec: Add source app for VoIP app calls 2023-10-10 20:03:44 +00:00
José Rebelo
7f593bf5e4 Allow ignore notifications from work profile 2023-10-10 20:22:07 +01:00
Sebastian Reichel
a1607ef3ae Zepp OS: Map hiking, outdoor swimming, climbing and table tennis activity types 2023-10-10 19:04:15 +00:00
Sebastian Reichel
4feadc2932 Zepp OS: Add workout codes for hiking and outdoor swimming
I got these codes from the debug logs from my Amazfit GTS 4 Mini.
Apparently they have the same codes as the old types defined in
HuamiSportsActivityType.
2023-10-10 19:04:15 +00:00
Andreas Böhler
3dd2869283 Fix first connect on the Casio GBX100/GBD-200 series 2023-10-10 18:56:14 +00:00
Gordon Williams
a3f3bb212a Bangle.js: lower threshold for low battery warning 2023-10-10 11:15:05 +01:00
Gordon Williams
7f962912bb minor tweak - ensure we round wind speed so it's not to 12 decimal places 2023-10-10 11:11:23 +01:00
Arjan Schrijver
69fcec059d Replace old-style preference switch with Material 3 switch 2023-10-09 09:53:36 +02:00
José Rebelo
9dde497b07 Prevent GBDeviceCandidate from ever being null
Prevents other crashes such as dbb47351d
2023-10-08 21:45:08 +01:00
José Rebelo
ad42255ea1 Amazfit T-Rex: Fix activity summary parsing 2023-10-08 21:27:05 +01:00
Andreas Shimokawa
dbb47351dd Fix a crash (I have that with a device I am working on) 2023-10-08 21:27:19 +02:00
Davis Mosenkovs
77450efb99 Add Common Symbols transliteration 2023-10-07 17:42:52 +03:00
José Rebelo
dcf2629854 Remove scanning intensity preference and legacy discovery activity
The refactored DiscoveryActivityV2 does not freeze anymore, even under
maximum scanning intensity on older phones, and seems to not have
introduced any regressions.
2023-10-06 22:16:58 +01:00
José Rebelo
fe9b88df17 Zepp OS: Fix setting of unknown button press apps 2023-10-06 21:52:13 +01:00
Reiner Herrmann
be07545eca Amazfit Band 7: add alexa menu entries
as a display menu item value for alexa already existed (with a different hex value),
add an alexa2 value that maps to the same menuitem.
2023-10-06 20:45:42 +00:00
José Rebelo
99130eb472 Fix closeable file leak on weather cache 2023-10-06 21:38:35 +01:00
Daniel Dakhno
17a9aa3b20 VESC: added name matching for Coordinator#supports 2023-10-06 13:13:09 +02:00
José Rebelo
0854263233 Fix Bohemic Smart Bracelet recognition 2023-10-05 21:47:00 +01:00
Daniel Dakhno
ef1d38d9d3 Device Manager: replaced getSupportedType with supports method
Huami: introduced getSupportedDeviceName

Huami: implemented getSupportedDeviceName

Huami: fixed typo

Device manager: added error on empty getSupportedDeviceName and empty supports()

Device manager: migrated more devices to getSupportedDeviceName

Device manager: simplified default supports implementation

Device manager: added caching for getSupportedDeviceName pattern

Device manager: added caching DeviceType resolution

Device manager: changed pattern matching find()->matches()

Device manager: use Candidate as caching key

Device manager: more verbose variable initialization

Device manager: fixed typo

Device manager: removed device caching from DeviceHelper

Gradle: removed protoc binary

Device manager: moved more devices to getSupportedDeviceName

Device manager: reduced usages of String.format

Device Vesc: removed multiple device types

Device management: regex improvements

Makibes HR3: fixed device recognition regex
2023-10-05 20:34:53 +00:00
Noodlez
4919be9f6d Update AsteroidOS support
Fixed a few bugs.
1. Moved from the depreciated Date object for sending over the time
2. Fixed media info sending. (It would crash when info was missing)
3. Fixed notification dismissal (Typo in removal tag from remove->removed)
4. Fixed quite a few warnings that were being brought up.
5. Added more of the supported models for AsteroidOS.

There are still a few problems that exist. Screenshotting still doesn't work. I'm just not sure how it works in GB. The AsteroidOS service is still not being detected, even though the AsteroidOSSync application is detecting it just fine.
2023-10-05 20:26:58 +00:00
José Rebelo
d1dee47186 Fix tests 2023-10-04 21:58:45 +01:00
Ganblejs
2c5b687cef Bump main targetSdkVersion to 33 2023-10-04 11:12:17 +00:00
Davis Mosenkovs
98df2d1837 Add Latvian transliteration 2023-10-04 00:30:27 +03:00
Davis Mosenkovs
26e6d7469f Message privacy: Add mode Hide only body 2023-10-02 21:22:27 +03:00
José Rebelo
5f05a0d88f Sony WF-1000XM5: Experimental support 2023-09-28 23:53:58 +01:00
José Rebelo
25af69733f Add default methods to AbstractDeviceCoordinator 2023-09-28 23:32:57 +01:00
Daniel Dakhno
b97b26ce3a Device manager: moved device icons and name to Coordinator 2023-09-28 00:11:02 +03:00
akasaka
8b01426d57 [Wena3/BUG] Lint 2023-09-25 13:46:19 +09:00
akasaka
65102e26f4 [Wena3/BUG] Height and weight were swapped around 2023-09-25 13:39:49 +09:00
akasaka
1140e60a88 [Wena3/BUG] Don't hide music title when momentarily pausing and resuming 2023-09-25 13:32:03 +09:00
akasaka
488af72341 [Wena3/BUG] BodyPropertiesSetting: height then weight on the wire, not the other way around 2023-09-25 13:22:27 +09:00
Davis Mosenkovs
c884c5d075 Mijia LYWSD02: Set time in onSetTime() 2023-09-23 17:19:12 +03:00
Davis Mosenkovs
edce45dcc3 Mijia LYWSD02: Battery + setting temperature scale
Implement reading battery percentage.
Implement setting temperature scale used on clock display.

Communication protocol taken from: https://github.com/h4/lywsd02
2023-09-23 17:18:42 +03:00
Davis Mosenkovs
f4af55d622 Mijia LYWSD02: Add support for LYWSD02MMC 2023-09-23 17:11:39 +03:00
vladkorotnev
889a1db801 Sony Wena 3: Initial support (#3311)
Co-authored-by: vladkorotnev <vladkorotnev@noreply.codeberg.org>
Co-committed-by: vladkorotnev <vladkorotnev@noreply.codeberg.org>
2023-09-23 10:31:41 +00:00
José Rebelo
9fe5bc049f Remove stray character 2023-09-19 20:48:20 +01:00
José Rebelo
9230580a01 Display devices with unknown name during scan 2023-09-19 20:45:14 +01:00
José Rebelo
e078ceff0a Introduce DiscoveryActivityV2 2023-09-19 20:45:14 +01:00
José Rebelo
a85246c279 Use GBDeviceCandidate#getName on all coordinators 2023-09-19 20:45:13 +01:00
José Rebelo
6f7fb261e7 Move Discovery activities to standalone package 2023-09-19 20:44:42 +01:00
Gabriele Monaco
492119f7ee Passing BarcodeId as value if not null 2023-09-19 16:52:19 +02:00
Gabriele Monaco
89f57243cf Added loyalty cards support for the banglejs 2023-08-20 11:14:03 +02:00
Daniel Dakhno
8c48a49d3a Mi Band HRX: added DeviceType for Mi Band HRX
Mi Band HRX: changed DeviceType key for MIBAND_HRX

Mi Band HRX: added migration to MIBAND_HRX

Mi Band HRX: added devicetype string for MIBAND_HRX

Huami HRX: removed redundant null check

Huami HRX: removed redundant supports callback
2023-09-18 22:08:09 +00:00
Arjan Schrijver
b8912976f1 Fossil/Skagen Hybrids: Show some toasts only on debug builds 2023-09-18 22:32:02 +02:00
José Rebelo
ee3ce06899 Zepp OS: Fix health settings on older Zepp OS versions 2023-09-17 23:17:22 +01:00
José Rebelo
3f518364f2 Amazfit GTR 3 Pro: Fix firmware and watchface upload 2023-09-17 20:52:33 +01:00
José Rebelo
d56a42a424 Zepp OS: Prevent AGPS file upload under low MTU 2023-09-17 16:39:39 +01:00
José Rebelo
e855cfec08 Amazfit GTR Mini: Remove experimental, change AGPS updates to not use file transfer 2023-09-16 14:55:27 +01:00
José Rebelo
763ee10a6c Fix support classes for some Amazfit devices
Affected devices:
- Amazfit Bip Lite
- Amazfit Bip S Lite
- Amazfit GTS 2 Mini
- Amazfit Pop
- Amazfit Pop Pro
2023-09-14 22:05:27 +01:00
Gordon Williams
c647c2647f Bangle.js: Improve file downloads - we can now at least get files downloaded 2023-09-14 12:49:37 +01:00
Gordon Williams
e18a991b13 Bangle.js: ensure char code 255 is translated properly into a String - this can then be sent to the App Loader. Fixes https://github.com/espruino/EspruinoAppLoaderCore/issues/55 2023-09-14 11:07:05 +01:00
José Rebelo
2bd1cc332f Log error when bonding fails immediately 2023-09-13 20:19:19 +01:00
José Rebelo
9401b61a02 Allow text to be shared to devices 2023-09-11 13:28:37 +00:00
Arjan Schrijver
557bfea35c Add lint baseline, enable linting on CI, fix some reported errors (#3291)
This PR:
- fixes some errors reported by `gradlew lint` and the Android Studio "Code Inspection" tool
- adds a snapshot file `lint-baseline.xml` of the remaining lint errors and warnings to be used by the linter as baseline
- adds a job for CI to run `gradlew lint` on every build

Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3291
Reviewed-by: José Rebelo <joserebelo@noreply.codeberg.org>
Co-authored-by: Arjan Schrijver <a_gadgetbridge@anymore.nl>
Co-committed-by: Arjan Schrijver <a_gadgetbridge@anymore.nl>
2023-09-11 09:17:04 +00:00
José Rebelo
7359186cee Zepp OS: Fix Alexa initial connection 2023-09-10 22:57:23 +01:00
José Rebelo
43d02b9661 Zepp OS: Parse SPO2 sleep data
Matched against the Zepp spo2 database
2023-09-10 16:58:40 +01:00
José Rebelo
1ac6983cd3 Amazfit Bip 5: Add new deviceSource 2023-09-08 21:38:22 +01:00
José Rebelo
c912ea0378 Zepp OS: Send UV Index as integer 2023-09-04 21:25:12 +01:00
José Rebelo
50c474e9ef Fix crash when timezone has no next DST transition 2023-09-04 14:12:59 +01:00
José Rebelo
4c7cb1cadc Fix ACTION_DST_CHANGED action 2023-09-02 11:08:19 +01:00
José Rebelo
a4c79a9395 Attempt to fix DST changes 2023-09-02 10:13:14 +01:00
illis
56fd2f8430 Give a more accurate representation of gps speed when manually calculating.
Dividing early makes us lose alot of precision.
2023-08-31 08:19:36 +12:00
illis
fa5e91f966 Fix GPS getSpeed issue for devices that report hasSpeed as true, yet only return a 0 value for speed. 2023-08-31 08:19:36 +12:00
illis
600658d86b bangle.js: Use GPS location time, when reporting gps events, instead of the time at transmission. 2023-08-30 23:51:07 +12:00
José Rebelo
2051ce2055 WeatherSpec: Fix typo in getLocation 2023-08-29 00:14:35 +01:00
Arjan Schrijver
d10745b0b3 Add getLocation method to WeatherSpec and use it for Zepp OS and Fossil/Skagen 2023-08-27 20:19:15 +00:00
José Rebelo
6d828260d0 WeatherSpec: Add some docs for AirQuality 2023-08-27 19:51:44 +01:00
José Rebelo
200cfdf29a Revert "Amazfit Bip 3 Pro: Enable HR stats and sleep respiratory rate"
Per the feedback on #3249, this does not seem to be supported.

This reverts commit 42f35259fc.
2023-08-27 17:45:57 +01:00
José Rebelo
88b72d51c8 Zepp OS: Use WeatherSpec gps coordinates for sunset if available 2023-08-27 16:23:32 +01:00
José Rebelo
495a8dec89 Zepp OS: Map WeatherSpec v4 fields
- Map hourly values
- Fix sunset and sunrise location
- Add moon rise, set and phase
- Add air quality
- Add wind speed, wind direction, visibility, pressure
2023-08-27 15:13:57 +00:00
José Rebelo
564cb1bfcc Introduce WeatherSpec v4
New fields for current weather:

- dewPoint
- pressure
- cloudCover
- visibility
- sunRise
- sunSet
- moonRise
- moonSet
- moonPhase
- airQuality
- latitude
- longitude
- feelsLikeTemp
- isCurrentLocation

New fields for daily forecast:

Deprecate the old "Forecast" class, which was not versioned, but keep it for backwards compatibility with old apps. Old WeatherSpec forecasts are de-serialized into the new Daily class. New fields:

- windSpeed
- windDirection
- uvIndex
- precipProbability
- sunRise
- sunSet
- moonRise
- moonSet
- moonPhase
- airQuality

Add hourly values:
- timestamp
- temp
- conditionCode
- humidity
- windSpeed
- windDirection
- uvIndex
- precipProbability

Air Quality:
- aqi (plume)
- co
- no2
- o3
- pm10
- pm25
- so2
- coAqi
- no2Aqi
- o3Aqi
- pm10Aqi
- pm25Aqi
- so2Aqi
2023-08-27 15:13:57 +00:00
Patric Gruber
b7e6a39ec1 use proper Optional 2023-08-26 19:39:05 +00:00
Patric Gruber
d0c602d243 overwrite supportsManualHeartRateMeasurement 2023-08-26 19:39:05 +00:00
Patric Gruber
67eac90f69 merge new activity samples with samples from database on overlap 2023-08-26 19:39:05 +00:00
Patric Gruber
86f77e05a9 remove unnecessary type conversion 2023-08-26 19:39:05 +00:00
Patric Gruber
70a8ca5067 add heart rate measurment support for infinitime 2023-08-26 19:39:05 +00:00
José Rebelo
42f35259fc Amazfit Bip 3 Pro: Enable HR stats and sleep respiratory rate 2023-08-26 17:52:10 +01:00
José Rebelo
7e848d19fb Zepp OS: Handle watchface change 2023-08-26 15:47:04 +01:00
José Rebelo
55d0697c44 Huami: Display explicit error if there is not enough free space 2023-08-26 12:14:23 +01:00
Daniel Dakhno
e36bd2eae7 Core: replaced device initialization logic with class based decision
Core: cleaned up imports

Device management: try single-argument-constructor first

Device management: fixed wrong device support class

Device management: added missing initial flags for Mi band 2 HRX

Device management: removed unused import

Device management: removed unused import

Device management: improved exception handling

Device management: prevent constructors from being optimized out

Device management: added UnknownDeviceSupport
2023-08-26 08:14:06 +00:00
José Rebelo
c01a33077e Huami: Enforce a maximum of 16 items on the main screen 2023-08-25 13:58:32 +01:00
José Rebelo
20d0d61ed8 WeatherSpec: Add a note on forecasts list 2023-08-23 16:16:40 +01:00
José Rebelo
da779e9864 Zepp OS: Improve weather code mapping 2023-08-23 15:48:26 +01:00
José Rebelo
fe58d64192 Zepp OS: Fix weather 2023-08-23 15:08:16 +01:00
José Rebelo
2320043c00 Fix min temp in cached weather data debug popup 2023-08-22 17:38:33 +01:00
José Rebelo
74dc0f70a6 Contacts: Migrate to ActivityResultContracts 2023-08-21 21:48:03 +01:00
José Rebelo
36e357ba67 Zepp OS: Add Alexa shortcut card 2023-08-21 15:55:58 +01:00
Arjan Schrijver
7c55f5df86 Upgrade cached weather old style dialog to Material 3 dialog 2023-08-20 22:20:14 +02:00
José Rebelo
50f962c520 Show UV Index and precip probability for cached weather 2023-08-20 10:01:15 +01:00
Kamalei Zestri
a0424527d5 Fixed formatting and unneccessary code 2023-08-20 08:56:29 +00:00
Kamalei Zestri
ff19ceeae8 Add "Showed Cached Weather" function to Debug menu 2023-08-20 08:56:29 +00:00
Daniel Dakhno
73d67d4093 Fossil/Skagen Hybrids: Embed menu_structure in watchface apps (#3245)
This PR aims to optimize the method of synchronizing the menu_structure for the openSourceWatchface by making the menu_structure request from the watch obsolete.

Instead, when a new menu_structure is sent to GB via the Intent `nodomain.freeyourgadget.gadgetbridge.Q_SET_MENU_STRUCTURE`, GB remembers that JSON.

Next time a watchface is built, the JSON is embedded into that app package so the watch doesn't forget the structure.

This requires a full GB rebuild to work properky.

Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3245
Co-authored-by: Daniel Dakhno <dakhnod@gmail.com>
Co-committed-by: Daniel Dakhno <dakhnod@gmail.com>
2023-08-19 20:48:53 +00:00
José Rebelo
454d766e88 Zepp OS: Add all remaining devices as experimental 2023-08-18 12:16:36 +01:00
José Rebelo
e5faf518ea Add support for experimental devices 2023-08-18 12:16:36 +01:00
José Rebelo
0a19f88a3f Amazfit Bip 3 Pro: Fix device icon for square device 2023-08-18 12:16:36 +01:00
José Rebelo
3fae1accb1 Zepp OS: Send calendar event location 2023-08-18 08:54:07 +01:00
Raghd Hamzeh
c8e19a2466
feat: add initial support for Amazfit Cheetah Pro 2023-08-16 22:19:48 -04:00
Ascense
14df63854f Withings Steel HR: Support setting device language 2023-08-16 12:43:57 +00:00
José Rebelo
b1bedfaa56 Keep charts current date on config changes 2023-08-16 13:42:44 +01:00
José Rebelo
b297e767ad Amazfit Bip 3 Pro: Initial support 2023-08-16 12:27:00 +01:00
José Rebelo
515b9efce8 Zepp OS: Fix calendar sync for Zepp OS 2 2023-08-14 18:40:39 +01:00
José Rebelo
d6567e553f Zepp OS: Map barcode types for ITF, PDF_417 and DATA_MATRIX 2023-08-14 14:12:46 +01:00
José Rebelo
19e7003c95 Zepp OS: Query calendar service version 2023-08-14 10:16:40 +01:00
José Rebelo
0e06bde741 Zepp OS: Enable AGPS updates for all devices 2023-08-12 13:25:19 +01:00
José Rebelo
13af55bd2e Zepp OS: Add Zepp Coach display item and shortcut card 2023-08-12 13:18:20 +01:00
José Rebelo
ee5325418a Zepp OS: Fix shortcut cards setting on Zepp OS 2.1 2023-08-12 13:18:20 +01:00
Arjan Schrijver
c9bbc05674 Show warning when choosing dynamic theme but dynamic colors are not supported by Android 2023-08-12 10:52:12 +02:00
José Rebelo
3799c51dc3 Add preference to display changelog on startup 2023-08-09 20:00:47 +01:00
José Rebelo
7fb34eb262 Build nightly changelog from git 2023-08-09 20:00:47 +01:00
José Rebelo
942e853ca7 Prevent display of empty changelog 2023-08-09 19:37:27 +01:00
José Rebelo
180ed42ee1 Bangle.js: Handle fw and hw versions 2023-08-09 09:09:52 +01:00
José Rebelo
a95820d09e Bangle.js: Fetch activity data 2023-08-08 22:11:14 +01:00
José Rebelo
f97250d46b Upgrade ZeTime settings to androidx 2023-08-08 20:14:27 +01:00
José Rebelo
f0067ebeae Upgrade Mi Band preferences to androidx 2023-08-08 20:10:05 +01:00
José Rebelo
61a78c0ad8 Move user name to about user preferences
- Remove from Mi Band prefs
- Remove fitness goal from mi band prefs - it's also un the about user
  section
- During pairing, direct user to the about user if there is invalid data
2023-08-08 20:10:05 +01:00
José Rebelo
4688f7d43c Fix chart legend text color on dark theme 2023-08-08 08:47:26 +00:00
Arjan Schrijver
ee4f3fabcf Fix widget device choice dialog behaviour 2023-08-08 08:47:26 +00:00
José Rebelo
88ebbdad7a Fix changelog background color to match dialog 2023-08-08 08:47:26 +00:00
Arjan Schrijver
225d466a7b Make widgets configuration activities adhere to configured style 2023-08-08 08:47:26 +00:00
Arjan Schrijver
73f949fc8c Upgrade remaining CardViews to MaterialCardView 2023-08-08 08:47:26 +00:00
Arjan Schrijver
eb896dcd57 Fix preference input type enforcement 2023-08-08 08:47:26 +00:00
Arjan Schrijver
b6e252c4c1 Switch UI to Material 3 and support dynamic colors 2023-08-08 08:47:26 +00:00
Arjan Schrijver
5a1e56a81e Fossil/Skagen Hybrids: Fix unused alarms being pushed to the device 2023-08-07 15:27:25 +02:00
José Rebelo
2bda160fb5 Bangle.js: Allow enable/disable alarms 2023-08-06 00:23:05 +01:00
Daniele Gobbetti
063fb31931 Garmin VivoMoveHR: prevent app crash
Use a more robust cast approach to prevent application crashes in some corner cases (e.g. when writing Math.round()ed values)
Since I don't own a VivoMoveHR device I couldn't test for regressions on the watch.
2023-08-04 17:57:46 +02:00
Arjan Schrijver
e305a9133f Fossil/Skagen Hybrids: Add input types to watchface/widget settings 2023-07-31 21:31:42 +02:00
Simon Sievert
0ae14fb80a
Bangle.js: Put JSON keys in quotes
this allows the watch to work with gadgetbridge while 'programmable' is set to off
2023-07-29 15:03:47 +02:00
José Rebelo
2d7a6b80eb Migrate Loyalty Cards preferences to AbstractSettingsActivityV2 2023-07-28 22:47:39 +01:00
José Rebelo
fe95d9aaa8 Fix disable log preference if log file not initialized
Regression introduced by 01b457895
2023-07-28 21:31:48 +01:00
José Rebelo
f3c74267c5 Set OpenTracks selection spinner to current package 2023-07-28 20:21:53 +00:00
José Rebelo
47a757bd91 Set default name for database export file 2023-07-28 20:21:53 +00:00
José Rebelo
f9ef3f47ab Extract Pebble and HPlus settings to standalone activities 2023-07-28 20:21:53 +00:00
José Rebelo
e068bfdb75 Fix crash when acquiring location 2023-07-28 20:21:53 +00:00
José Rebelo
12b5ec8415 Upgrade Settings to androidx
- Extend AbstractSettingsActivityV2
- Replace all checkbox preferences with switch preferences
- Add app:useSimpleSummaryProvider to all preferences that were in getPreferenceKeysWithSummary
- Add null checks on all prefs to fix crashes in nested preference screens
- Replace listeners with lambdas to reduce code indentation
- Set input type to number where relevant
2023-07-28 20:21:53 +00:00
José Rebelo
f4b059f173 Introduce AbstractSettingsActivityV2
This class introduces some of the common logic across preference
screens, handling nested PreferenceScreens, as well as the back button
and action bar title setting.
2023-07-28 20:21:53 +00:00
José Rebelo
597373f126 Allow filtering notifications from work profile apps 2023-07-28 18:53:50 +01:00
José Rebelo
078d3e2a55 Make application list sorting case-insensitive 2023-07-28 18:50:02 +01:00
José Rebelo
48ee259d89 Bangle.js: Reorganize device settings 2023-07-27 18:38:15 +01:00
hrglpfrmpf
c1fd0b77ad Support for Withings Steel HR (#2831)
Co-authored-by: hrglpfrmpf <hrglpfrmpf@web.de>
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2831
Co-authored-by: hrglpfrmpf <hrglpfrmpf@noreply.codeberg.org>
Co-committed-by: hrglpfrmpf <hrglpfrmpf@noreply.codeberg.org>
2023-07-26 17:20:43 +00:00
José Rebelo
606e20a065 Amazfit GTR/S 3: Enable AGPS Updates 2023-07-25 21:47:12 +01:00
José Rebelo
69ae0817cf Upgrade Q-Hybrid watchface settings to androidx 2023-07-25 20:52:39 +01:00
José Rebelo
bac1d35479 Upgrade notification settings to androidx 2023-07-25 19:52:12 +01:00
Daniele Gobbetti
53c06b8c31 Introduce native app shortcuts for android > 30 2023-07-25 18:28:35 +02:00
Daniele Gobbetti
540a4499f6 Miband 6: enable PAI and Stress support 2023-07-25 18:23:15 +02:00
José Rebelo
cac92fdc26 Upgrade discovery and pairing preferences to androidx 2023-07-25 12:24:42 +01:00
Gordon Williams
1b281c7c62 Fixing SecurityErrors on Android 12+ discovered via Play Store (after API31 update)...
* Check for bluetooth permissions in DiscoveryActivity
 * At startup we now pop up a dialog explaining why we want *any* permissions
 * Fixing ControlCenterv2 permissions requests for Android S and later (requesting background location stopped *any* dialog appearing)
 * Fixing all errors in DiscoveryActivity from Android Studio by catching errors
 * Move permission requests around to ensure that we only call RequestMultiplePermissions from onCreate
 * Only show dialog if we have permissions to request
 * Fix "LifecycleOwners must call register before they are STARTED" on some Android devices: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3192/files#issuecomment-967267
2023-07-25 11:50:53 +01:00
José Rebelo
f08c08005b Upgrade about user preferences to androidx 2023-07-25 09:22:45 +01:00
José Rebelo
cac41ea945 Upgrade charts preferences to androidx 2023-07-25 09:22:41 +01:00
José Rebelo
116703adff Pull reusable preferences logic to AbstractPreferenceFragment 2023-07-24 23:34:00 +01:00
José Rebelo
dd91716680 Amazfit GTR 4: Whitelist fw 3.23.3.1 diff from 3.21.0.1 2023-07-24 20:08:35 +01:00
José Rebelo
3b7f4f7238 Allow for gatt write request responses
Allow for support classes to send a write request response to the
device, fi requested. The standard actually expects this to happen, but
Gadgetbridge did not originally support it, so there are concerns that
enabling this globally will cause issues for devices that do not expect
the response.

See also: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2831#issuecomment-941568
2023-07-24 18:16:23 +01:00
José Rebelo
a02a6cba14 Update device settings action bar title depending on current screen 2023-07-23 22:27:11 +01:00
José Rebelo
b1ceb96100 Fix notification filters by title if notification does not contain a body 2023-07-23 21:02:46 +01:00
José Rebelo
702651c119 Sony WH-1000XM3/WF-SP800N: Add volume setting 2023-07-23 19:40:11 +01:00
Damien 'Psolyca' Gaignon
916fb6b768 Add customize buffer size on BTBRQueue 2023-07-22 19:49:34 +00:00
José Rebelo
247a954920 Huami/Zepp OS: Improve reconnection
- Remove notification on unneeded characteristics for Zepp OS devices
- Reset MTU before initializing device, since the support class is
  reused when reconnecting, and keeping the previous high MTU before
  renegotiating again can make the initialization fail sometimes
  (band will never reply)
- If any of the chunked characteristics is null during initialization,
  mark the device as waiting for reconnect, which will make it retry the
  connection later with a backoff delay.
2023-07-22 20:31:26 +01:00
José Rebelo
aa87c5abeb Fix reconnect delay reset after all devices are initialized 2023-07-22 20:28:25 +01:00
José Rebelo
db4349bfc9 Huami: Display fetch operation description 2023-07-22 20:27:20 +01:00
José Rebelo
07ec8a095b Zepp OS: Handle fitness goals in Huami2021Support
HuamiSupport handles configurations with performInitialize, which may
trigger a device reinitialization if called while the device is already
initializing.

Handle fitness goals in Huami2021Support, which should be one of the
last settings still missing.
2023-07-22 14:35:54 +01:00
José Rebelo
76576af324 Huami 2021: Do not initialize device for chunked ack
Since we now handle chunked acks as of 74dac3f5c, these may happen
during device initialization. We must not use performInitialized, or
initializeDevice will be called twice, since the device will still not
be in INITIALIZING state.
2023-07-22 13:50:54 +01:00
Arjan Schrijver
f58c655449 Fossil/Skagen Hybrids: Strip unicode characters that the watch can't display 2023-07-22 12:13:25 +02:00
mormegil
8f5c32fbee Fix PineTime firmware upload for Android 12 target
Now that the target SDK was changed to 31, the `no.nordicsemi.android:dfu`
library needs to be updated, as the current version dies on Android 12+.

However, the fixed version (1.12.0) also fixed MTU handling: The previous
versions ignored the MTU settings completely for legacy DFU.
<https://github.com/NordicSemiconductor/Android-DFU-Library/pull/260>

And while our `PineTimeJFSupport` code always tried to set MTU to 517, it was
ignored. Which was good because PineTime does not support larger MTUs. So that
we need to set the correct low MTU now the library really applies it.

Note that the current version of the DFU library cannot be used right now, it
does not even compile because of androidx dependency mismatch.

Fixes #3203
2023-07-22 09:54:45 +00:00
Johannes Krude
9700fef111 Casio GMW-B5000: separate DeviceType, but still using the CasioGWB5600DeviceSupport 2023-07-22 09:39:56 +00:00
Johannes Krude
685ccfd1c9 Casio GW-B5600: setAutoReconnect(true) on first connection 2023-07-22 09:39:56 +00:00
Johannes Krude
7cb060c9fe Casio GW-B5600: initial support 2023-07-22 09:39:56 +00:00
Johannes Krude
91415e2500 Casio: Refactoring 2023-07-22 09:39:56 +00:00
José Rebelo
57ef0ded64 Sony WH-1000XM5: Fix speak-to-chat enable/disable 2023-07-22 10:24:33 +01:00
José Rebelo
5c78488e93 Fix emoji transliteration 2023-07-20 21:54:31 +01:00
mormegil
cc8a1dbdaa Added copyright header to all new Garmin Vivomove files 2023-07-20 20:30:14 +00:00
mormegil
a4ec3a62aa PR-related improvements
- rename service identifiers for clarity
- define BLE scan filter in the coordinator (even though GB does not use those currently)
- rename `DownloadedFitFile` to `GarminFitFile`
- bump DB schema version to 49
2023-07-20 20:30:14 +00:00
mormegil
dccb8ed1c4 Changes suggested in PR
- use `BLETypeConversions`, added the missing functions there (+ unit tests for all)
- change Java package of Protobuf definitions so that they are not discarded by Proguard
-- +add subpackages to the Proguard rules so we can subdivide the classes

+ disable device-specific settings for Vivomove (no settings yet)
2023-07-20 20:30:14 +00:00
Mormegil
3a58314db6 Garmin Vivomove HR support
- communication protocols
- device support implementation
- download FIT file storage

Features:
- basic connectivity: time sync, battery status, HW/FW version info
- real-time activity tracking
- fitness data sync
- find the device, find the phone
- factory reset

Features implemented but not working:
- notifications: fully implemented, seem to communicate correctly, but not shown on watch

Features implemented partially (not expected to work now):
- weather information (and in future possibly weather alerts)
- music info
- firmware update: only the initial file upload implemented, not used

Things to improve/change:
- Device name hardcoded in `VivomoveHrCoordinator.getSupportedType`, service UUIDs not available
- Download FIT file storage: Should be store (and offer the user to export?) the FIT data forever?
- Obviously, various code improvements, cleanup, etc.
2023-07-20 20:30:14 +00:00
Mormegil
114f6fcbf0 First piece of Garmin Vivomove HR support basics
- `DeviceType` definition
- Definition of activity sample table
- Coordinator and sample provider
2023-07-20 20:30:14 +00:00
José Rebelo
bdb904faf9 Fix character mark removal before flattening to ASCII 2023-07-17 22:42:53 +01:00
José Rebelo
12dd9651e7 Fix opening screenshots from notification on external apps 2023-07-17 00:09:10 +01:00
vanous
849337b447 Amazfit Neo: Enable PAI 2023-07-16 22:57:18 +02:00
José Rebelo
258023a05d Zepp OS: Fix reminder creation
Regression introduced by 9d3c480414
2023-07-12 23:27:15 +01:00
José Rebelo
525f1567c1 Huami: Prevent activity data fetch if there is no data to fetch
More information in #3201

Fixes #3196
2023-07-12 23:21:56 +01:00
José Rebelo
ccfc112e2b Huami: Persist workout raw details even if gpx has no points 2023-07-12 23:18:31 +01:00
Richard de Boer
8e270fcbf7
Bangle.js: refactoring
Extract handling of packet types with large code blocks.
Incidentally fixes "intent" packets launching a full calendar sync if
intents are disabled in GB settings.
2023-07-11 20:46:50 +02:00
José Rebelo
4c7920133b Amazfit GTS 2e: Add activate display on lift sensitivity 2023-07-11 18:19:43 +01:00
José Rebelo
226ccd9fad Remove duplicated media session handling code 2023-07-09 17:39:21 +01:00
José Rebelo
3da539be23 Bohemic Smart Bracelet: Initial support 2023-07-09 14:29:39 +00:00
José Rebelo
298dbbe777 LeFun: Broadcast when HR samples are received 2023-07-09 14:29:39 +00:00
José Rebelo
da5f91f05b Huami/Zepp OS: Improve music info stability 2023-07-09 15:16:37 +01:00
José Rebelo
ac89b1df9d Use package name for Catima permissions
The Catima permissions had to be split per package-name to avoid
conflicts between debug and release channels due to mismatching apk
signatures.

See https://github.com/CatimaLoyalty/Android/pull/1411
2023-07-09 14:29:30 +01:00
Benjamin Swartley
739bd1b5a8 Use AudioManager for Media Buttons
Switch from ACTION_MEDIA_BUTTON to all AudioManager

Add mb_intents pref for audioplayer
2023-07-08 23:13:04 +00:00
José Rebelo
665268c419 Fix Weather notification integration 2023-07-07 09:03:35 +01:00
José Rebelo
708cb0c617 Zepp OS: Attempt to parse raw sensor values 2023-07-05 17:47:19 +01:00
José Rebelo
3516099dc9 Fix crash if Catima is not installed 2023-07-04 09:43:35 +01:00
José Rebelo
fea3bf50a4 Zepp OS: Add loyalty cards integration with Catima 2023-07-03 23:19:19 +01:00
José Rebelo
e95c8a3775 Add PAI charts 2023-07-02 16:05:10 +01:00
Gordon Williams
88e0b9543d Bangle.js: HTTP request XPath can now return Arrays.
More robost toJSON that deals with unicode and null
Log messages when converting words to images so we can debug when words are being converted that shouldn't be
2023-06-30 11:34:53 +01:00
Gordon Williams
0e0f72410a Bangle.js: fix mixup of navigation left slight&sharp icons 2023-06-29 14:49:22 +01:00
Gordon Williams
d82ba7a04c Bangle.js: Send the timestamp of our last activity sample to the Bangle on connect, so that it can update us on missing activity samples 2023-06-26 11:39:29 +01:00
Gordon Williams
2aac797dec Remove some build warnings in BangleJSDeviceSupport 2023-06-26 11:20:50 +01:00