introduce background service

This MR introduces a background service for the card10 app. This has the following advantages:

  • BLE connection is kept alive even when the activity is killed, improving stability
  • connection status is shown in notification
  • one central point for connection management, independent of hardware specifics
  • makes features that require a continuous BLE connection possible (notifications, current time service)

The GUI has been updated to reflect these changes. In particular:

  • connection (i.e. background service) can be turned on and off
  • (un-)pairing is only possible when disconnected
  • cleaner (and explicit) state model (not paired, paired but disconnected, connecting, connected)

Since there are no automated tests, I manually tested all features. Everything worked as before.

Small technicality: In Android terms, what this is using is a Foreground Service. This requires a notification, but the system will not kill it (or at least, very very rarely). I still call it the card10 background service, since that makes more sense.

Merge request reports