Commit Graph

87 Commits

Author SHA1 Message Date
Arjan Schrijver 43fddd0110 Dashboard view (#3478)
This adds a new dashboard-type view to Gadgetbridge. The new dashboard activity displays several widgets with aggregated statistics from multiple devices. New preferences are added to allow configuration of the dashboard and its widgets. A new bottom navigation bar is added to switch between the Dashboard and Devices views.

Some issues that prompted this feature and provided inspiration for the implementation:
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/301 (More Intuitive User Interface)
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/3074 (Ability to merge historical data from several devices)

Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3478
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>
2024-04-04 19:28:04 +00:00
Daniel Dakhno d0f8eccd75 Device connection: removed references to ACTION_START 2024-03-05 00:11:32 +01:00
FYG_license_bot_ignore_me 4c7476845b Update license headers and CONTRIBUTORS file 2024-01-10 19:01:48 +01: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
Ganblejs 2c5b687cef Bump main targetSdkVersion to 33 2023-10-04 11:12:17 +00:00
Daniel Dakhno b97b26ce3a Device manager: moved device icons and name to Coordinator 2023-09-28 00:11:02 +03:00
José Rebelo e078ceff0a Introduce DiscoveryActivityV2 2023-09-19 20:45:14 +01:00
José Rebelo 6f7fb261e7 Move Discovery activities to standalone package 2023-09-19 20:44:42 +01:00
José Rebelo 3799c51dc3 Add preference to display changelog on startup 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 88ebbdad7a Fix changelog background color to match dialog 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
Daniele Gobbetti 53c06b8c31 Introduce native app shortcuts for android > 30 2023-07-25 18:28:35 +02: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
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
Andreas Shimokawa 25d0d262bf Revert "Introduce app shortcuts"
This reverts commit b4b153c62d.
2022-10-06 10:22:41 +02:00
José Rebelo 088b0098b5 Fix crash when opening Gadgetbridge from the notification
intent.getAction() can be null, which would throw a NPE.
2022-10-03 15:57:12 +01:00
Daniele Gobbetti b4b153c62d Introduce app shortcuts
This adds the functionality of long-pressing the launcher icon for directly connecting a device.
The devices are automatically added as shortcuts when they are being connected.
The helper library handles the maximum number of shortcuts automatically.
2022-10-02 17:18:41 +02:00
Ganblejs 82315b3281 Bangle.js: extending intents functionality (continuation)
Add support for (explicit) service intents.
Add support for setting flags for intents.
Add support for setting multiple categories for intents.
Add ability for Gadgetbridge to wake the Android device and leave the
 lock screen to start activities when it is sleeping. A new activity
 'WakeActivity' is used for this. (Must use 'trusted device' in Android)
Add dismiss-button to 'display over other apps' permission pop up.
Bangle.js can send "gadgetbridge" as package info to accomodate the
 different GB build variants/flavours.
Use only getContext() and not getApplicationContext() when executing
 the intents.
2022-09-19 21:52:40 +02:00
Ganblejs 60c7f79366 Bangle.js: Extend intents functionality for Bangle.js
...to allow intents to start activities on the android device.

Add pop-up asking for permission to "Display over other apps"

Add info for intents on Bangle.js

Add message to display on "Display over other apps" permission pop-up

Move permission to display over other apps to main build variant/flavor.

fix getting permission for display over other apps.

Clarify that permission to display over other apps is mainly for Bangle.js.
2022-08-17 00:35:34 +02:00
Gordon Williams f996973a4d Minor fixes for crashes that Play Store build has encountered 2022-08-12 08:41:16 +02:00
José Rebelo 1755b4e093 Animate card movement on device list 2022-07-05 19:53:43 +02:00
Daniel Dakhno 62f77ef8d0 ControlCenter: added folders to ControlCenter 2022-06-28 14:01:51 +02:00
Gordon Williams 3ef39433a6 Bangle.js build: remove the 'Donate' link for the Bangle.js build only, and instead add a message in the app's About dialog (unfortunately this is needed because Google Play store policy doesn't allow you to 'buy' stuff outside of the store) 2022-06-13 08:38:05 +01:00
Gordon Williams 2bb8eefe23 Merge branch 'freeyourgadget_master' of codeberg.org:Freeyourgadget/Gadgetbridge into freeyourgadget_master 2022-06-10 12:13:23 +01:00
vanous c188eccff7 Keep main menu items unselected, fix #2351 2022-06-04 11:26:45 +02:00
Gordon Williams 3f053927e0 Pop up a dialog asking about Location permissions (although others get requested too).
Conversation at https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2675#issuecomment-455468
2022-05-20 08:39:47 +01:00
Gordon Williams 8d2a127879 When we need permissions, we now pop up a dialog asking nicely and explaining why. Also instructions, since it may be unclear for new users. 2022-05-19 22:17:24 +02:00
gfwilliams 2cb5844020 Bangle.js build flavor (#2621)
This PR adds build flavors to `build.gradle`. The default is called `main`, but we also add `banglejs` which allows the building of an app called `Bangle.js Gadgetbridge`.

This will have internet connectivity, allowing Bangle.js watches to request data directly from the internet - and it's named so as hopefully not to be confused with the normal offline Gadgetbridge, while still giving credit.

Eventually the plan is to put this on the Google Play store, and to have additions in it which are good for Bangle.js users but would otherwise negatively impact normal Gadgetbridge users (a build flavor is used so we can keep the same codebase and not fork).

About naming - I'd mentioned `Gadgetbridge for Bangle` to @ashimokawa but thinking about how it would appear in the app store and Android apps list, it probably makes sense to call it `Bangle.js Gadgetbridge` so it's listed under `B...`. Happy to change or use something else if you have strong opinions though.

**Note:** adding build flavors seems to add the flavor name to existing builds. As a result, *all other builds will now have `main` in the name*. Unfortunately I didn't see another way around this, but hopefully it won't break anything.

Co-authored-by: Gordon Williams <gw@pur3.co.uk>
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2621
Co-authored-by: gfwilliams <gfwilliams@noreply.codeberg.org>
Co-committed-by: gfwilliams <gfwilliams@noreply.codeberg.org>
2022-03-31 11:36:26 +02:00
vanous 468a40c62e Activity Card: React to User settings. Unify step length 2021-12-05 10:34:55 +01:00
vanous b24da9a409 Activity info into Device Card: use correct coordinator method
- use correct DeviceCoordinator method supportsActivityTracking()
- remove placeholders from xml
- clarify comments in DeviceCoordinator
- clean up some previously added unused imports
2021-11-18 16:06:56 +01:00
Petr Vaněk 21ea7b6cc2 Add Activity info into Device Card. (#2453)
- this tries to address a common request to display user data up front
- i would make this via a fragment, but RecyclerView doesn't like Fragments
- (fragments would make it much easier to also add a charts like view,
  like we use on the Activity list tab)
- i added configuration that allows to disable it partially or fully
Co-authored-by: Petr Vaněk <vanous@noreply.codeberg.org>
Co-committed-by: Petr Vaněk <vanous@noreply.codeberg.org>
2021-11-18 12:22:43 +01:00
vanous d3d4130a95 Reworking notification management
- 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
2021-10-10 11:49:13 +02:00
vanous e6ae5e357e add Heart icon (trigger heart measurement) to device action icons 2021-08-08 11:12:08 +02:00
vanous 6f0245a23c Data(base) Management screen clarifications
- rename to Data management in menu and activity
- expand texts and explain files meaning
- add confirmation screen to export
- change layout to Linear, rather then Grid
- add listing of file content in the /files directory
- allow Data management activity to rotate

Add missing widget string to strings
2021-01-03 15:46:12 +01:00
marco.altomonte ac66885848 Fix main fab behavior 2020-11-14 12:21:38 +01:00
TaaviE 498c0d42e2 Made sure to check if location permission has been given by the user for scanning 2020-08-02 21:07:14 +03:00
TaaviE da529579f4 Made it possible to disable asking for a few permissions. 2020-08-01 17:27:26 +03:00
TaaviE 1ceaf48ba7 Only request ANSWER_PHONE_CALL above API 26 2020-08-01 17:27:15 +03:00
TaaviE bb1b31bcb4 Made sure to check notification listener access even after first launch because not having it can cause issues 2020-08-01 17:27:15 +03:00
Andreas Shimokawa c735dd0dd4 fix compilation 2020-07-31 14:05:45 +02:00
TaaviE 629a3bcf63 Improved when and how the toast to grant permissions is displayed, won't request permissions that have been permanently disabled or denied by the system. No way to actually ask if the permission has been denied by the user. 2020-07-30 00:04:36 +02:00
TaaviE 1c2cd99efd Made sure to request the permission to change ringer mode to silent 2020-07-27 21:21:19 +03:00
vanous c1a8fb502c Add About screen 2020-07-11 17:04:29 +02:00
cpfeiffer 136825fa9d Do not connect to random (first) device on start 2020-02-26 21:15:30 +01:00
Andreas Shimokawa d3ab597e8a Merge branch 'master' into fossil-q-hr 2020-02-22 10:16:51 +01:00
Andrzej Surowiec 01ab7bcb54 Fix answering/rejecting calls on Android 9 2020-02-22 09:50:05 +01:00
Andreas Shimokawa 1c91c037a8 Merge branch 'master' into fossil-q-hr 2020-01-29 17:22:21 +01:00
License Bot d6fa5d0dd5 Update license headers 2020-01-09 10:44:32 +01:00
dakhnod 2acac2146e auto connects to device on startup (mainly for testing) 2019-12-31 03:38:38 +01:00