this PR aims to add device for multiple connected devices at once.
A lot of stuff already works, some things need to be done:
- [x] change DeviceCommunicationService to hold multiple devices and supports
- [x] implement connect / disconnect logic
- [x] widgets, not really suited for multiple devices, so far
- [x] change the notification to show multiple devices
- [ ] change GBDeviceService#onFindDevice and similar API functions to target individual devices, not all connected.
- [x] move auto-reconnect setting to device settings
- [x] fix music event crash
- [x] work out behaviour when pressing "connect" from notification
- [ ] handle service crashes
- [ ] suit coordinator methods for multiple devices of same kind
- [x] change ACL_CONNECTED receiver to connect to devices that are not currently registered in DeviceCommunicationService
- [ ] adjust after-boot auto-connection logic
- [ ] fix hanging device support. Device says disconnected, GB says connected
- [x] firmware updater doesn't work
My attempt to make onFindDevice work was to change the arguments to ```EventHandler#onFindDevice(GBDevice device, boolean start)```.
The Problem is that this forces the device-specific implementations to also accept GBDevice as an argument.
Co-authored-by: Daniel Dakhno <dakhnod@gmail.com>
Co-authored-by: Andreas Shimokawa <shimokawa@fsfe.org>
Co-authored-by: dakhnod <dakhnod@gmail.com>
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2526
Co-authored-by: dakhnod <dakhnod@noreply.codeberg.org>
Co-committed-by: dakhnod <dakhnod@noreply.codeberg.org>
- Add more info about AutoExport into DataManagement activity
- Fix scheduleAlarm name
- Run AutoExporter in another thread
- Start AutoExporter on app startup if not running yet from AutoStartReceiver
- Save and show time of scheduled and last executed AutoExport
- Fitness App Tracking Start already works, Stop is commented out for
time being
- Catch exception in case the package name for controlled app doesn't
exist/work
- rename some methods to better indicate their functions.
- make the notification filter to be allow or deny list,
solves #2256 and #336
- make app word filter to behave based on allow/deny settings.
- make Pebble notifications to honor the allow/deny settings.
- add generic "debug function" to Debug activity.
- add Message privacy mode settings, solves #2279
When music player switchs a song, multiple notifications(around 5 in my
test) are sent to NotificationListner, during this,
MediaControllerCompat does not always get the music info we need, the
music info and state seem randomly combined previous song and current
one.
To avoid unnecessary music info updates, debounce
onSetMusicInfo/onSetMusicState calls, so only the last music info and
state are sent to the device.
Go to notification blacklist, allow an app if blacklisted, than configure it's behavior with the menu icon on the right hand side.
Should be pretty much self explanatory.
Database Scheme raised to 20
It seems some apps like Telegram add a lot of Unicode Control sequences
for unknown reasons. Because these strings are set by external apps, it
is safer to sanitize them. For the moment, only Unicode control
sequences are stripped.
Fixes: #1344
- Fixes "Mute, Open, Dismiss" to work again on pebble
- Greatly reduces complexity in PebbleProtocol, since all logic for adding specific reply actions to notification have been moved to generic code
Fixes the rest of #1336 (the part that says "Additionally, dismissing a notification on the watch no longer dismisses it on the Android device")
Prevent duplicate notifications with a dedicated data structure (not reusing
the anti-burst one) #1062, #657
Pebble: Forward the actions attached to notifications (not only reply)
inspired by the work of dnastase #705
In case of grouped notifications, we get multiple notifications
also if the android device shows only one.
This means that with this change the most recently updated chat
will get through, but others will not.
This should help with #1062 and #657
Automatically connect at boot if gadgetbridge is configured to start at
boot and to attempt an automatic connection when bluetooth is available
Fixes#693 and fixes#891
According to the documentation the current call state might be not correctly
contained in the extra, and using getCallState() is the right thing to do
Might help for #799 (and #756)