Skip to content

Pop-out player: PiP first, and the overlay permission is not free #10

Description

@StaticHumStudio

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions