birdbird bae723595a PlaybackService: keep playback seamless across offline/online transitions
Switching the library between online and offline rebuilt the player
unconditionally (release -> new ExoPlayer -> setMediaItems -> prepare),
which paused audio and even restarted playback after server property edits.

- entering automatic offline is now a pure state flip: the queue and the
  player are untouched, unplayable entries are skipped by the playback
  failure recovery, and the original order resumes once the server is
  reachable again
- returning online does nothing: stream URLs are re-resolved on the next
  load through the regenerated music service
- engaging manual offline mode prunes the timeline in place instead of
  rebuilding the player: removals never touch the playing item, rebuilt
  URIs are applied via replaceMediaItem at adjusted indexes
- the transition decision is extracted into AccessStateTransitions and the
  prune plan into OfflineQueuePruner, both unit-tested
- the bus subscription is replaced by a single accessState collector, which
  also removes the cross-coroutine serverSelectionChanged flag race and the
  pointless player restart on server property edits
- the access state reaction replaces the racy flag with a previous-state
  comparison; full player rebuilds remain for JUKEBOX switches, server
  switches and the unplayable-current-item fallback
2026-10-01 13:33:50 +02:00
2026-02-15 17:08:45 +00:00
2026-03-10 18:43:48 +01:00
2025-04-04 12:55:13 +00:00
2026-01-23 15:02:40 +00:00
2026-08-27 23:24:09 +02:00
2026-07-08 07:59:45 -05:00
2026-07-08 07:59:45 -05:00
2017-01-12 09:27:58 +01:00
2026-08-13 10:53:16 +02:00
2022-10-01 11:42:55 +00:00

Ultrasonic

Ultrasonic is free and open-source music streaming Android client for OpenSubsonic API (version 1.7.0 or higher) compatible servers.

Help wanted

We currently don't have that much time to spend developing Ultrasonic, so any contributions or active developers are always welcomed. Have a look at CONTRIBUTING to get started.

Download

App is available to download at following stores:

Get it on Google Play Get it on F-Droid Get it on GitLab

Warning: All three versions (Google Play, F-Droid and the APKs) are not compatible (not signed by the same key)! You must uninstall one to install the other, which will delete all your data.

If you want to use the version downloaded from F-Droid or from GitLab with Android Auto, you must enable Unknown Sources as it is described in this wiki page.

Bugs and issues

First, see if your issue haven’t been yet reported here, otherwise open a new issue.

Documentation

See documentation.

Contributing

See CONTRIBUTING.

Supported (tested) OpenSubsonic API implementations

Other OpenSubsonic API implementations should work as well as long as they follow API documentation.

License

This software is licensed under the terms of the GNU General Public License version 3 (GPLv3).

Full text of the license is available in the LICENSE file and online.

S
Description
Free and open-source music streaming Android client for Subsonic API compatible servers
Readme GPL-3.0
36 MiB
0 Stars 1 Watchers 0 Forks
Languages
Kotlin 100%