The cut is per account, not per device: a file request from any device signed in to the same account (another
phone, an iPod, the Mac) cut this phone's stream. The player's own stream now also asks for the file as a
download (?download=1), which Plex leaves out of that rule; the plain address follows for servers that refuse
downloads. Transcodes aren't affected.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two causes, both fixed:
- Plex keeps one file stream per device and cuts the one in progress when another starts, so the read-ahead
and the player cut each other off. Whole-file fetches (read-ahead, downloads, download-first) now ask for
the file as a download (?download=1), which Plex leaves out of that rule; the plain address follows for
servers that refuse downloads.
- Http.abort closed the socket of a response already read to the end, whose connection was back in the pool
and could be carrying the read-ahead. abort now leaves finished responses alone (test/PoolAbortTest.java).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- One build per Android level, as in Tenda: build/PlexampLite.apk (Android 2.2+, versionCode 1508) and
build/PlexampLite-api16.apk (Android 4.1+, 1516), from shared src/ plus platform/api8 or platform/api16.
- Android 4.1 build: ExoPlayer 2.18.7 behind a small Engine interface (gapless hand-over to read-ahead and
downloaded files, a longer buffer, MediaPlayer fallback for tracks it can't decode), a notification and
lock screen with art and buttons, a resizable widget, Holo, a menu button without a Menu key, metered networks.
R8 shrinks ExoPlayer and Guava (tools/fetch_exoplayer.sh, tools/r8-rules.pro).
- Both builds: lyrics in Now Playing as in the Mac app (timed lyrics follow and seek), a home-screen widget,
media play/pause keys, the moon icon drawn without clipPath.
- PlexampLite-noreport on the SD card stops play reports, for tests against a real server.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>