Podlite 1.12: a build for Android 4.1 (Xperia J) with ExoPlayer, speed and skip silences

- One build per Android level, as in Tenda and Plexamp Lite: build/Podlite.apk (Android 2.2+, versionCode 1308) and
  build/Podlite-api16.apk (Android 4.1+, 1316), from shared src/ plus platform/api8 or platform/api16; build.sh now
  runs on the local toolchain (aapt2, dx or R8, signapk.py; the JKS key converted for the run).
- Android 4.1 build: ExoPlayer 2.18.7 behind an Engine interface, with playback speed (player header) and skipping
  silences (Settings), a 3-minute buffer and MediaPlayer as fallback for audio it can't decode; a notification and
  lock screen with the cover and buttons; Holo; a menu button on phones without a Menu key; metered networks for
  "download on Wi-Fi only".
- Both builds: tlskit's Http.abort fix (a finished response's pooled connection is no longer closed under a later
  request); the lock screen's and newer headsets' play/pause keys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
XoséandClaude Opus 5.5 committed 2026-11-01 21:56:18 +01:00
1 parent b2ca212c45
commit 666a7eb8cd
32 files changed
+1267 -123

No files matched your search

+13 -2
View File
@@ -14,7 +14,7 @@ server and other apps.
- Native Java, no libraries beyond the bundled TLS stack. All sizes in `res/values/dimens.xml`.
- Galician interface; warm dark colours with an amber accent (from the radio icon).
## Current scope (1.11)
## Current scope (1.12)
- Login with user/password (refreshes 2.26+ short-lived tokens; older servers' long-lived token) or an API key.
- HTTP on the LAN; bundled TLS 1.2 for `https://` (Mozilla roots); other certificates shown by fingerprint,
@@ -25,9 +25,15 @@ server and other apps.
- Progress sync every 15 s and on pause; offline positions sent later.
- Headset buttons; pauses for calls and unplugging.
## Android 4.1 build
- `build/Podlite-api16.apk` (minSdk/targetSdk 16) next to `build/Podlite.apk` (API 8): shared `src/`, per-level
`platform/api8|api16/…/Platform.java` with the same methods, `platform/api16/res` overlaid. ExoPlayer with speed and
skip silences, notification and lock screen with cover and buttons, Holo, ⋮ without a Menu key, metered networks.
## Out of scope
- Audiobooks, playback speed (Android 2.x can't), HLS/transcoded streams (so no Opus).
- Audiobooks, HLS/transcoded streams (so no Opus); playback speed on Android 2.x (it can't).
## Must not break
@@ -35,6 +41,11 @@ server and other apps.
reported, never marked played. A stall of 12 s is reported.
- Package `com.miniabs` and `miniabs.keystore` (password `miniabs`): updates install over MiniABS.
- `src/com/miniabs/net/` is a copy of `tlskit`: change it in `../tlskit` and reinstall.
- `platform/api8` and `platform/api16` keep the same `Platform` methods; shared code calls no API the API 8 jar lacks
(the api8 compile and Dalvik check catch it). Each build's `versionCode` is the manifest's × 100 + level, same key;
both APKs are listed in `../tenda-lite/repo/apps.json`.
- The Android 4.1 build targets API 16: network on the main thread is allowed in `Platform.init`; keep the desktop
tests' files (`Util`, `Api`…) free of `Platform`.
- Installs to internal storage.
## Code map