1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-13 21:49:27 +01:00
Commit Graph

383 Commits

Author SHA1 Message Date
José Rebelo
81aef0bf35 Add support for multiple weather locations
Introduce the concept of primary and secondary weathers:

* Primary weather keeps the same behavior as previously across all weather providers, so it's non-breaking. This location is not necessarily the current location, just the primary weather location set by the user.
* The GenericWeatherReceiver now has a new extra WeatherSecondaryJson, that receives a json list with secondary weather locations.

It's guaranteed that the primary weather always exists, so the list of WeatherSpecs provided to devices is never empty. Update all support classes accordingly.
2024-03-29 21:10:40 +00:00
Gordon Williams
665656ddc0 Bangle.js: Fix message reply (and add .reply in notify if message supports reply)
NotificationListener now stores the handle ID in wearableAction.handle rather than hard-coding the calculation
Should fix ZeppOS too which was copy&paste from Bangle.js
2024-03-27 10:50:50 +00:00
Daniel Dakhno
d0f8eccd75 Device connection: removed references to ACTION_START 2024-03-05 00:11:32 +01:00
Davis Mosenkovs
7a79a1d0f5 Add wake lock and wakeup for time sync
Wake lock with around 10 second timeout is a quick and dirty solution,
however as the time sync should happen once per several days the 10
second wake time should not be an issue.
2024-02-18 19:12:30 +00:00
Davis Mosenkovs
cc5078332b TimeChangeReceiver: Ensure the alarm is set
Ensure TimeChangeReceiver alarm is scheduled when enabling
datetime_synconconnect and registering TimeChangeReceiver broadcast
receiver.

It is important to re-schedule the alarm after registering broadcast
receiver, because:
1. if broadcast receiver was unregistered while previous alarm arrived,
there is no alarm scheduled;
2. re-scheduling the alarm resets the periodic time sync timer when
first device is connected (which is desired).

It is important to re-schedule the alarm when datetime_synconconnect
gets enabled, because there might be no alarm scheduled.

Call onSetTime() when enabling datetime_synconconnect.
2024-02-18 19:12:30 +00:00
Davis Mosenkovs
31fc266f94 Periodically sync time on all connected devices
Sync time every 43 hours, 53 minutes and 23 seconds.
Interval is a bit smaller than 2 days.
Interval is a prime (in seconds) so time of sync will slide over time.

If next DST change is less than 48 hours in future, wait for it.
2024-02-18 19:12:30 +00:00
Arjan Schrijver
8aaa766dcd Fix crash when receiving empty music state 2024-02-04 20:35:40 +01:00
FYG_license_bot_ignore_me
4c7476845b Update license headers and CONTRIBUTORS file 2024-01-10 19:01:48 +01:00
Arjan Schrijver
4c0750e75a Add missing navigation actions to GMaps handler 2023-12-21 11:16:23 +01:00
José Rebelo
4dbf9bb8ac Huami: Toggle phone silent mode from band 2023-12-11 10:50:31 +00:00
José Rebelo
d28cff478c Delete notifications from connected devices only 2023-12-10 17:28:15 +00:00
José Rebelo
ef73ea1bd5 Make LimitedQueue generic 2023-12-10 10:30:27 +00:00
José Rebelo
577ee27c14 Intent API: Add debug action for test new function 2023-12-09 10:59:39 +00:00
José Rebelo
6984572d33 Xiaomi: Allow notification open on phone 2023-12-08 12:12:35 +00:00
José Rebelo
e91ad80d27 Xiaomi: Cleanup code and comments 2023-11-25 22:18:34 +00:00
José Rebelo
3948f95505 Xiaomi: Dismiss notification from phone when dismiss from watch 2023-11-25 21:16:53 +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
Daniele Gobbetti
0da552aa33 GenericWeatherReceiver: use forecast source for uvIndex and precipProbability 2023-10-27 19:01:10 +02:00
Davis Mosenkovs
60f91a9f93 Support for COL Reminder notifications 2023-10-10 21:22:02 +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
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
Daniel Dakhno
b97b26ce3a Device manager: moved device icons and name to Coordinator 2023-09-28 00:11:02 +03: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
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
José Rebelo
515b9efce8 Zepp OS: Fix calendar sync for Zepp OS 2 2023-08-14 18:40:39 +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
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
José Rebelo
226ccd9fad Remove duplicated media session handling code 2023-07-09 17:39:21 +01:00
José Rebelo
665268c419 Fix Weather notification integration 2023-07-07 09:03:35 +01:00
Gordon Williams
b2aa61e182 Changed NavigationSpec's distance into a String.
Previously we used an integer (in meters) but when using
Google Maps navigation, Google Maps picks units based on locale *and*
the distance - it might report "100m" or "20km". Then we carefully undo
all that work, and for PineTime we just as "m" so you may well have "20000m"
or more displayed, which is not ideal.

I imagine at some point that will change, but we probably want to
be able to handle that in the OSMAnd side of Gadgetbridge so all watches
that implement navigation will benefit (and won't duplicate code).
2023-06-13 07:32:12 +00:00
José Rebelo
5c3b76b838 Add missing mutability flags to PendingIntents 2023-06-13 00:14:04 +01:00
José Rebelo
8899187ee4 Replace forEach with explicit for cycle
forEach with lambda is only available in SDK24+
2023-06-13 00:11:42 +01:00
José Rebelo
c666947a28 Intent API: Add command to set device mac address 2023-06-11 19:52:30 +00:00
José Rebelo
a3c59b0e0e Zepp OS: Add experimental sync of SpO2, stress, PAI, HR stats and sleep respiratory rate 2023-06-10 17:19:22 +01:00
Gordon Williams
1fa8936544 Google Maps: Added more recognised icons - needed another enum for going all the way around a roundabout 2023-06-09 13:59:05 +01:00
Gordon Williams
735f27d5bf Add Navigation handling to Bangle.js
Add extra 'ETA' field to NavigationInfoSpec
Allow Local Notifications from Google Maps to be parsed into NavigationInfoSpec by GoogleMapsNotificationHandler

Moved notification handling after blacklist check as per https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3136#issuecomment-920095

Ensure we don't create a nav message for 'Location Shared with you' messages.
Recognise 'ft' as a distance unit and convert accordingly

Google Maps navigation: Adding new recognised icons, and removing warnings/errors from file
2023-06-09 08:50:40 +01:00
Enrico Brambilla
93e8996b52 Fossil/Skagen Hybrids: Add support for ultraviolet index and rain probability
Updates WeatherSpec to v3 to add fields for UV index and precipitation probability
Co-authored-by: Enrico Brambilla <enricobilla@noreply.codeberg.org>
Co-committed-by: Enrico Brambilla <enricobilla@noreply.codeberg.org>
2023-06-05 19:52:26 +00:00
José Rebelo
0c52f3d3da Improve notification logging
- Reduce duplicated and redundant messages
- Log notification priority
- Add log entry for notification ignored by dnd
2023-06-03 20:28:27 +01:00
Ganblejs
7d1de4a5e8 Bangle.js: Bump flavor targetSdkVersion to 31
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
2023-05-30 00:25:20 +02:00
octospacc
514f983299 Intent API: Update DEBUG_SEND to DEBUG_SEND_NOTIFICATION, and make fields clearer 2023-05-29 23:55:54 +02:00
octospacc
2659a23421 Intent API: Add allow_debug_commands option and receivers for SEND, INCOMING_CALL 2023-05-29 22:57:34 +02:00
José Rebelo
592356faf1 OsmAnd: Make navigation instructions configurable 2023-05-26 11:26:22 +00:00
Martin Boonk
88161bed91 Bangle.js: Inform user if GPS set to off in settings 2023-05-22 22:17:10 +00:00