The state engine mechanism, designed for the player class, was
over-engineered. The structure of the class makes debugging player
errors unnecessarily annoying, by obfuscating the code-path the error
followed, and in general
has created a significant amount of technical debt.
This changes the player to use an async-await setup for the top-level
operations, laying things out much more cleanly
and linearly.
---------
Co-authored-by: Álvaro Velad Galván <ladvan91@hotmail.com>
When configuring offline storage in initStorage in initialising storage, an OfflineConfig was used instead of a player config, which worked in v2.5 but not in v3.0. Because of this when the final code was run the progress bar wouldn't work properly as progressCallback was not set.
Since we added support for abortable and concurrent store()
operations, this tutorial has gotten slightly out of date. This
updates those particular details.
Change-Id: I932073b04b100cb201ee6be4dad8d8dba3deff18
The track selection algorithm in the offline tutorial is only an
example, and not a best practice. This change adds comments to make
this clear.
Change-Id: Ic2d2e50505b5b3a05640278016b01a1e9a5f1445
This change include the offline tutorial to show users how to set up
storage and use offline playback.
Change-Id: I470bfc6761a433116a766d338ac2a87eee1bde28