PhairPlay v1.1.0-mh.2
The release that makes iOS 26 screen mirroring actually visible on the TV. With v1.1.0-mh.1's fixes the full mirror session already worked (verified: H.264 decoded at ~60 fps), but video only renders when the app's Activity — and thus its Surface — is in the foreground, which the receiver-appliance lifecycle no longer guarantees.
Added
- App comes to the foreground when a sender connects. A high-importance full-screen intent notification (new channel
phairplay_incoming_channel) startsMainActivitywhen the AirPlay state hits CONNECTED, so the video Surface exists before frames arrive — no more black screen when mirroring starts while the app is closed. Ported from JObersi10/PhairPlay. Adds theUSE_FULL_SCREEN_INTENTpermission. - …and steps aside again when the session ends. An auto-opened Activity moves its task to the back on disconnect, so the TV returns to whatever app was visible before the session (or the launcher when there was none). A manually opened app never auto-hides, and the "incoming connection" notification is withdrawn on disconnect.
- Diagnostics: unknown mirror payload types are hexdumped once per session (first 16 header bytes + first 32 payload bytes). iOS 26 sends a steady ~25 KB "payload type 5" every second that no open-source receiver documents; this collects material to analyse it.
Fixed
- Double teardown escalated the mDNS name to "(3)/(4)". TEARDOWN of the last stream and the subsequent socket close both fired
onStreamingStopped, running two concurrent mDNS restarts that raced each other's fresh registration. A guard flag (ported from JObersi10/PhairPlay) makes teardown idempotent. PhairPlayServiceis markedandroid:stopWithTask="false", matching the receiver-appliance lifecycle introduced in mh.1.
Installation
Side-load the APK that matches your device:
- PhairPlay-v1.1.0-mh.2-googletv.apk — Google TV / Android TV (Android 10+)
- PhairPlay-v1.1.0-mh.2-firetv.apk — Amazon Fire TV (Android 7.1+)
Full changelog: CHANGELOG.md