49 lines
3.0 KiB
Markdown
49 lines
3.0 KiB
Markdown
# MiniABS
|
|
|
|
A tiny Audiobookshelf **podcast** client for the Samsung Galaxy Mini (GT-S5570) and other Android 2.2+ phones. Native Java, no libraries, ~100 KB.
|
|
|
|
## Install
|
|
|
|
1. Copy `MiniABS.apk` to the phone (USB to the SD card, or download it in the browser).
|
|
2. On the phone: **Settings → Applications → Unknown sources** → tick it.
|
|
3. Open the APK from a file manager and install. It can be moved to the SD card (Settings → Applications → Manage applications → MiniABS → Move to SD card).
|
|
|
|
## Connecting
|
|
|
|
Use your server's **local http:// address**, e.g. `http://192.168.1.10:13378`.
|
|
|
|
Android 2.x only speaks old TLS and has an outdated certificate list, so it usually can't connect to modern HTTPS servers (including Let's Encrypt behind a reverse proxy). The "Accept any HTTPS certificate" box only helps with self-signed certificates on servers that still allow older TLS.
|
|
|
|
Sign in with your username and password, or tick "Use an API key instead". It works with both current servers (2.26+, short-lived access tokens that MiniABS refreshes automatically) and older ones (single long-lived token).
|
|
|
|
## Using it
|
|
|
|
- **Latest**: "Continue listening" plus the newest episodes across your podcast library. Tap the library name at the top to switch libraries.
|
|
- **Shows**: every podcast; tap one for its episodes. Menu key → sort oldest/newest, hide played.
|
|
- **Saved**: episodes downloaded to the SD card, plus download progress.
|
|
- **Tap** an episode to play. **Long-press** for Download, Delete download, Mark as played/unplayed, Go to show.
|
|
- **Player**: skip back/forward (set the amounts in Settings), seek bar, show notes. Menu key → sleep timer, mark as played, download, stop.
|
|
- **Headset buttons**: play/pause; next/previous skip forward/back. Playback pauses when headphones are unplugged and during calls.
|
|
|
|
Colored dots: blue = new, amber = in progress (with a bar), grey = played.
|
|
|
|
## Progress sync
|
|
|
|
Playback opens an Audiobookshelf session and syncs every 15 seconds and on pause, so progress follows you to other apps. Saved episodes play offline; their positions are kept on the phone and sent to the server next time you're online (or tap refresh on the Saved tab).
|
|
|
|
## Limits
|
|
|
|
- Episodes are streamed with direct play. Formats Android 2.x can't decode (e.g. Opus) can't be played, since the transcoded HLS stream isn't supported on 2.x.
|
|
- No playback speed control: Android 2.x's media player doesn't support it.
|
|
- Downloads need an SD card. "Download on Wi-Fi only" is on by default.
|
|
|
|
## Building
|
|
|
|
Needs a JDK, `aapt`, `dalvik-exchange` (dx), `zipalign`, `apksigner` (Ubuntu: `apt install aapt dalvik-exchange zipalign apksigner`) and an API 8 `android.jar`:
|
|
|
|
ANDROID_JAR=/path/to/android-8/android.jar ./build.sh
|
|
|
|
Compiling against the API 8 jar guarantees no newer Android APIs are used. The APK is signed with `miniabs.keystore` (password `miniabs`); keep it to install updates over the top.
|
|
|
|
`test/run_tests.sh` runs the API, JSON and progress code on the desktop against a mock Audiobookshelf server (`test/mock_abs.py`).
|