Plexamp Lite 1.11: Minamp is now Plexamp Lite

Renames the app (label, texts, log files, Plex product name, User-Agent, APK). The package
name, preferences and signing key stay, so it installs over Minamp and keeps its settings.
tools/strings.py catches up with the strings added straight to the XML in 9440536.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
XoséandClaude Opus 5.5 committed 2026-10-19 16:57:47 +02:00
1 parent 08590f3224
commit 7eebb0d881
15 files changed
+52 -50

No files matched your search

+14 -14
View File
@@ -1,4 +1,4 @@
# Minamp
# Plexamp Lite
A small Plexamp-style music player for Plex, built for the Samsung Galaxy Mini (GT-S5570:
Android 2.2/2.3, 240×320 ldpi screen, 600 MHz ARMv6, 384 MB RAM). Runs on any Android 2.2+ phone.
@@ -13,21 +13,21 @@ log stays in English since it's meant for troubleshooting.
## Install
1. On the phone: **Settings → Applications → Unknown sources** (tick it).
2. Copy `Minamp.apk` to the SD card (USB cable, or download it in the browser) and open it
with a file manager, or from a computer: `adb install Minamp.apk`.
3. Minamp installs to internal storage (about 1 MB): an app on the SD card is killed whenever the
2. Copy `PlexampLite.apk` to the SD card (USB cable, or download it in the browser) and open it
with a file manager, or from a computer: `adb install PlexampLite.apk`.
3. Plexamp Lite installs to internal storage (about 1 MB): an app on the SD card is killed whenever the
phone shares its SD card over USB, which stopped the music.
## Sign in
Open Minamp → **Sign in with Plex**. It shows a 4-character code; on any other device go to
**plex.tv/link** and type it in. Minamp then lists your servers (owned and shared) and music libraries.
Open Plexamp Lite → **Sign in with Plex**. It shows a 4-character code; on any other device go to
**plex.tv/link** and type it in. Plexamp Lite then lists your servers (owned and shared) and music libraries.
*Connect to a server address* is the manual fallback: an IP/hostname plus an optional X-Plex-Token.
## Streaming from anywhere
After sign-in Minamp knows every address Plex advertises for your server and picks the best
After sign-in Plexamp Lite knows every address Plex advertises for your server and picks the best
working one, re-checking whenever the phone switches network:
| Order | Connection | When it's used |
@@ -36,16 +36,16 @@ working one, re-checking whenever the phone switches network:
| 2 | Home network, plain HTTP | On your Wi-Fi (fast: no encryption work for the phone) |
| 3 | Home network, HTTPS (`*.plex.direct`) | On your Wi-Fi if plain HTTP is refused, or if *Settings → Encrypt at home too* is on |
| 4 | Remote, HTTPS | Away, if Remote Access is set up on the server |
| 5 | Plex Relay | Away, when the server isn't reachable directly (bandwidth-capped; Minamp caps itself at 192 kbps) |
| 5 | Plex Relay | Away, when the server isn't reachable directly (bandwidth-capped; Plexamp Lite caps itself at 192 kbps) |
Secure addresses are tried one at a time: on a 600 MHz phone a TLS handshake takes seconds, and
several at once make each of them time out. Minamp uses TLS 1.2 with session resumption, so only
several at once make each of them time out. Plexamp Lite uses TLS 1.2 with session resumption, so only
the first connection to each server pays the full cost; later ones resume in a fraction of it.
For the best remote experience enable **Settings → Remote Access** on your Plex Media Server.
Without it, Relay still works.
Android 2.x can't do modern TLS, so Minamp bundles its own TLS 1.2/1.3 stack (Bouncy Castle,
Android 2.x can't do modern TLS, so Plexamp Lite bundles its own TLS 1.2/1.3 stack (Bouncy Castle,
renamed to `com.minamp.bc` so it doesn't clash with the old copy inside Android) and verifies
certificates against Mozilla's root store (from `certifi`). A tiny loopback proxy feeds the
phone's media player, so HTTPS streams and relay work the same as local ones. If the phone's
@@ -60,11 +60,11 @@ clock has been reset to before 2024 the certificate date check is skipped rather
(default 192 kbps) caps both while the sound goes to a Bluetooth speaker: on the Mini, Wi-Fi and
Bluetooth share one radio, and a lighter stream keeps the speaker from stuttering.
* Seeking in a transcoded track restarts the transcode at the new position.
* If a stream fails, Minamp re-picks the connection and resumes; if it fails again it downloads
* If a stream fails, Plexamp Lite re-picks the connection and resumes; if it fails again it downloads
the whole track first and plays from the SD card. "Download tracks before playing" forces that
mode (useful on flaky mobile data). Playback that stalls ("playing" but the time doesn't move
for 10 s) is recovered the same way.
* A Bluetooth speaker that drops its link for a moment pauses Minamp, which resumes by itself if the
* A Bluetooth speaker that drops its link for a moment pauses Plexamp Lite, which resumes by itself if the
speaker is back within 20 s. Why playback paused or stopped is written to the connection log.
* Plays are reported to Plex (Now Playing in the Plex dashboard, play counts, resume position).
@@ -83,7 +83,7 @@ clock has been reset to before 2024 the certificate date check is skipped rather
the SD card. MP3 originals are kept as they are (unless above a lower *Download quality* in
Settings); everything else is transcoded to MP3, 320 kbps by default. Downloaded tracks play from
the SD card, offline too, and plays made offline are reported to Plex later.
* *Menu -> Close Minamp* stops the music and closes every screen.
* *Menu -> Close Plexamp Lite* stops the music and closes every screen.
* Wired headset button: 1 click play/pause, 2 next, 3 previous; Bluetooth media keys;
pauses for calls and when headphones are unplugged.
@@ -91,7 +91,7 @@ clock has been reset to before 2024 the certificate date check is skipped rather
```
tools/setup_toolchain.sh # once: fetches aapt2, the API 8 android.jar, builds dx, renames Bouncy Castle
./build.sh # -> build/Minamp.apk
./build.sh # -> build/PlexampLite.apk
```
`build.sh` runs `aapt2` (resources), `javac` (Java 8 bytecode checked against the API 8