Extended shell media controls
We discussed this a bit at the Berlin GNOME Mobile hackfest. The takeaway was that apps have pretty diverse use cases and needs, making it hard to show useful controls without knowing a bit more about the content/context/type of app.
Types of use cases:
- Short video
- Movie
- TV Show with multiple episodes
- Podcast
- Live Stream (audio or video)
- Music
- Voice Message
- Audio Books
- Presentations (MPRIS prev/next buttons)
Some examples of custom layouts on Android 13:
Features:
- Title
- Subtitle
- Album cover
- Jump +10s
- Next/prev track
- Interactive progress bar
- Non-interactive progress bar
Other features apps may want buttons for/have buttons for on other platforms:
- Skip chapter
- Landscape cover for videos
- Add tracks to favorites
- Set 1.5/2x speed
- Interactive seek bar
- Non-interactive progress bar
- Presentation app (e.g. no play button?)
- Buffering state for live stream?
- Record stream?
- Adaptive speed?
- AI skip to beginning of sentence?
- AI skip ad?
Potential approaches:
- Special case specific use cases (music, podcasts, etc.), apps can specify which they want
- Allow apps to specify exactly which buttons they want
Proposal for a path forward we discussed at the hackfest:
- Apps request which of the default buttons they want
- Pause/Play
- Next/previous track
- Skip forward/back (app can specify how many seconds)
- Maybe apps should be able to customize icons for default stuff (e.g. custom icon with skip interval on it?)
- Apps can define custom buttons with custom icons for edge case-y stuff
- The shell sends an mpris call to the application once a custom button was pressed
- Default stuff like play/pause has to be supported
- Shell defines the precise button layout, but maybe apps can provide layout hints in addition to buttons?
Edited by Tobias Bernard