The ask
A pop-out player.
First, what already exists
There IS an in-app mini player: ui/components/MiniPlayer.kt, used from
HomeScreen and MainActivity. So this issue is not that. "Pop-out" means the
player surviving OUTSIDE the app, which Android offers in two very different
shapes with very different costs.
Option A: Picture-in-Picture
A small floating window the system manages, appearing when you leave the app.
- Permission cost: zero. Needs
android:supportsPictureInPicture on the
activity and an enterPictureInPictureMode call. Nothing in the manifest's
permission block changes.
- Designed for video, and this is an audio app, so the PiP window renders
whatever Compose surface it is given. Cover art plus transport is fine.
- Real limitation: PiP is tied to the Activity. When the activity finishes, the
window goes. It is "the player follows you out of the app for a while," not
"a permanent floating control."
Option B: a floating overlay bubble
A true always-on-top control that works over any app, any time.
- Requires
SYSTEM_ALERT_WINDOW. This is the expensive one.
- The manifest currently declares SEVEN permissions and not one of them is
sensitive: INTERNET, ACCESS_NETWORK_STATE, three FOREGROUND_SERVICE flavors,
WAKE_LOCK, POST_NOTIFICATIONS. No storage, no microphone, no location. That
clean list is doing real work for a listing whose headline section is NOTHING
PHONES HOME.
- "Display over other apps" has a scary out-of-app grant flow, draws Play
scrutiny, and reads to a privacy-minded installer as the app asking for
something it should not need. The r/selfhosted and Show HN crowd the venue
plan targets is precisely the audience that notices.
Recommendation
Start with PiP. It delivers most of the felt benefit for none of the
positioning cost, and it does not touch the permission list that the app's
main differentiator rests on.
Take on SYSTEM_ALERT_WINDOW only if PiP is tried and genuinely does not do
what Jeff wants, and even then decide it as a positioning tradeoff rather than
a technical one.
Question for Jeff before any work starts
Which behavior is actually wanted?
- "Keep the controls visible when I switch to another app for a minute" ...
that is PiP, and it is cheap.
- "A control that floats over everything all the time, like a chat bubble"
... that is the overlay permission, and it costs the clean manifest.
The answer changes which of the two above gets built, so it is worth answering
before anyone opens an editor.
Post-2.1.0.
The ask
A pop-out player.
First, what already exists
There IS an in-app mini player:
ui/components/MiniPlayer.kt, used fromHomeScreenandMainActivity. So this issue is not that. "Pop-out" means theplayer surviving OUTSIDE the app, which Android offers in two very different
shapes with very different costs.
Option A: Picture-in-Picture
A small floating window the system manages, appearing when you leave the app.
android:supportsPictureInPictureon theactivity and an
enterPictureInPictureModecall. Nothing in the manifest'spermission block changes.
whatever Compose surface it is given. Cover art plus transport is fine.
window goes. It is "the player follows you out of the app for a while," not
"a permanent floating control."
Option B: a floating overlay bubble
A true always-on-top control that works over any app, any time.
SYSTEM_ALERT_WINDOW. This is the expensive one.sensitive: INTERNET, ACCESS_NETWORK_STATE, three FOREGROUND_SERVICE flavors,
WAKE_LOCK, POST_NOTIFICATIONS. No storage, no microphone, no location. That
clean list is doing real work for a listing whose headline section is NOTHING
PHONES HOME.
scrutiny, and reads to a privacy-minded installer as the app asking for
something it should not need. The r/selfhosted and Show HN crowd the venue
plan targets is precisely the audience that notices.
Recommendation
Start with PiP. It delivers most of the felt benefit for none of the
positioning cost, and it does not touch the permission list that the app's
main differentiator rests on.
Take on
SYSTEM_ALERT_WINDOWonly if PiP is tried and genuinely does not dowhat Jeff wants, and even then decide it as a positioning tradeoff rather than
a technical one.
Question for Jeff before any work starts
Which behavior is actually wanted?
that is PiP, and it is cheap.
... that is the overlay permission, and it costs the clean manifest.
The answer changes which of the two above gets built, so it is worth answering
before anyone opens an editor.
Post-2.1.0.