Fix a bug and add a feature for media resumption #2458
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix a bug where media resumption would break if prepare() was called in onCreate()
Media resumption code relied on the assumption that if no media
controller sends any commands, the player will stay in STATE_IDLE.
This optimization however breaks if a developer calls prepare()
in or shortly after (in my case, which caused this to be a race)
onCreate(). Instead, use playWhenReady to determine whether we need
to do a query with effort, because playWhenReady really shouldn't
be set to true on device bootup. :)
SystemUI asks for resumption support while a session is active and just
started playing (playWhenReady=true), hence the optimization is still valid.
Formal API to allow apps to handle playback resumption themselves
This could previously be achieved by inspecting stack trace of
onPlaybackResumption() and then returning settable future that will
never be set, but this API adds a cleaner way and makes the caveats
of this clearer.
Issue: #1764