Podlite 1.8: MiniABS is now Podlite
Renames the app (label, texts, Audiobookshelf client name, User-Agent, APK). The package name, preferences and signing key stay, so it installs over MiniABS and keeps its settings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
06a5c7078f
commit
a4be0bab44
23 files changed
+55
-55
No files matched your search
@@ -26,7 +26,7 @@ import android.os.Build;
|
||||
|
||||
/** Audiobookshelf REST client (API as of server 2.x, including the 2.26+ token system). */
|
||||
final class Api {
|
||||
static final String VERSION = "1.7";
|
||||
static final String VERSION = "1.8";
|
||||
|
||||
static class ApiException extends IOException {
|
||||
final int code;
|
||||
@@ -64,7 +64,7 @@ final class Api {
|
||||
conn.setUseCaches(false);
|
||||
conn.setInstanceFollowRedirects(true);
|
||||
setMethod(conn, method);
|
||||
conn.setRequestProperty("User-Agent", "MiniABS/" + VERSION + " (Android " + Build.VERSION.RELEASE + ")");
|
||||
conn.setRequestProperty("User-Agent", "Podlite/" + VERSION + " (Android " + Build.VERSION.RELEASE + ")");
|
||||
return conn;
|
||||
}
|
||||
|
||||
@@ -397,7 +397,7 @@ final class Api {
|
||||
private static JSONObject deviceInfo(Context c) throws JSONException {
|
||||
return new JSONObject()
|
||||
.put("deviceId", Prefs.get(c).deviceId())
|
||||
.put("clientName", "MiniABS")
|
||||
.put("clientName", "Podlite")
|
||||
.put("clientVersion", VERSION)
|
||||
.put("manufacturer", Build.MANUFACTURER)
|
||||
.put("model", Build.MODEL)
|
||||
@@ -416,7 +416,7 @@ final class Api {
|
||||
.put("forceDirectPlay", true)
|
||||
.put("forceTranscode", false)
|
||||
.put("supportedMimeTypes", mimes)
|
||||
.put("mediaPlayer", "MiniABS");
|
||||
.put("mediaPlayer", "Podlite");
|
||||
} catch (JSONException ignored) {
|
||||
}
|
||||
return obj(call(c, "POST", "/api/items/" + e.itemId + "/play/" + e.id, body, 200,
|
||||
|
||||
@@ -31,7 +31,7 @@ public class DownloadService extends IntentService {
|
||||
private static volatile String cancelId;
|
||||
|
||||
public DownloadService() {
|
||||
super("MiniABS downloads");
|
||||
super("Podlite downloads");
|
||||
}
|
||||
|
||||
static void enqueue(Context c, Episode e) {
|
||||
@@ -105,9 +105,9 @@ public class DownloadService extends IntentService {
|
||||
percent = 0;
|
||||
cancelId = null;
|
||||
PowerManager.WakeLock wake = ((PowerManager) getSystemService(POWER_SERVICE))
|
||||
.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MiniABS download");
|
||||
.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Podlite download");
|
||||
WifiManager.WifiLock wifi = ((WifiManager) getSystemService(WIFI_SERVICE))
|
||||
.createWifiLock(WifiManager.WIFI_MODE_FULL, "MiniABS download");
|
||||
.createWifiLock(WifiManager.WIFI_MODE_FULL, "Podlite download");
|
||||
wake.acquire();
|
||||
wifi.acquire();
|
||||
try {
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.miniabs;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
/** One podcast episode, trimmed down to what MiniABS needs. */
|
||||
/** One podcast episode, trimmed down to what Podlite needs. */
|
||||
final class Episode {
|
||||
String itemId = ""; // library item (the podcast) id
|
||||
String id = ""; // episode id
|
||||
|
||||
@@ -101,7 +101,7 @@ public class HomeActivity extends BaseActivity {
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
if (intent.getBooleanExtra("exit", false)) { closeApp(); return; } // "Pechar MiniABS" from the player
|
||||
if (intent.getBooleanExtra("exit", false)) { closeApp(); return; } // "Pechar Podlite" from the player
|
||||
if (intent.hasExtra("tab")) selectTab(intent.getIntExtra("tab", TAB_LATEST));
|
||||
}
|
||||
|
||||
@@ -496,7 +496,7 @@ public class HomeActivity extends BaseActivity {
|
||||
menu.add(0, 2, 0, "Biblioteca").setIcon(android.R.drawable.ic_menu_agenda);
|
||||
menu.add(0, 3, 0, "En reprodución").setIcon(android.R.drawable.ic_media_play);
|
||||
menu.add(0, 4, 0, "Axustes").setIcon(android.R.drawable.ic_menu_preferences);
|
||||
menu.add(0, 5, 0, "Pechar MiniABS").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
|
||||
menu.add(0, 5, 0, "Pechar Podlite").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.Map;
|
||||
import com.miniabs.net.Http;
|
||||
|
||||
/**
|
||||
* An HttpURLConnection backed by the bundled TLS 1.2 client (com.miniabs.net, from Minamp), so
|
||||
* An HttpURLConnection backed by the bundled TLS 1.2 client (com.miniabs.net, from Plexamp Lite), so
|
||||
* the existing API, cover, download and stream code keeps its shape while the phone talks to the
|
||||
* normal https:// address: Android 2.x's own TLS 1.0 can't. Any method works (PATCH too), and
|
||||
* connections are kept alive between requests.
|
||||
|
||||
@@ -245,7 +245,7 @@ public class PlayerActivity extends BaseActivity {
|
||||
}
|
||||
menu.add(0, 4, 0, "Ir ao programa").setIcon(android.R.drawable.ic_menu_view);
|
||||
if (active) menu.add(0, 5, 0, "Deter").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
|
||||
menu.add(0, 6, 0, "Pechar MiniABS").setIcon(android.R.drawable.ic_lock_power_off);
|
||||
menu.add(0, 6, 0, "Pechar Podlite").setIcon(android.R.drawable.ic_lock_power_off);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ public class PlayerService extends Service implements MediaPlayer.OnPreparedList
|
||||
super.onCreate();
|
||||
instance = this;
|
||||
am = (AudioManager) getSystemService(AUDIO_SERVICE);
|
||||
wifi = ((WifiManager) getSystemService(WIFI_SERVICE)).createWifiLock(WifiManager.WIFI_MODE_FULL, "MiniABS");
|
||||
wifi = ((WifiManager) getSystemService(WIFI_SERVICE)).createWifiLock(WifiManager.WIFI_MODE_FULL, "Podlite");
|
||||
wifi.setReferenceCounted(false);
|
||||
buttons = new ComponentName(this, MediaButtonReceiver.class);
|
||||
registerReceiver(noisy, new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY));
|
||||
|
||||
@@ -16,7 +16,7 @@ import android.content.Context;
|
||||
|
||||
/**
|
||||
* Lets Android's media player stream from an HTTPS server. The player can't do HTTPS before
|
||||
* Android 3.1 and wouldn't use MiniABS's certificate trust anyway, so it plays
|
||||
* Android 3.1 and wouldn't use Podlite's certificate trust anyway, so it plays
|
||||
* http://127.0.0.1:PORT/<random id> and this proxy fetches the real stream (forwarding seeks as
|
||||
* Range requests) with a fresh sign-in token each time.
|
||||
*/
|
||||
@@ -37,7 +37,7 @@ final class StreamProxy implements Runnable {
|
||||
private StreamProxy(Context c) throws IOException {
|
||||
this.c = c.getApplicationContext();
|
||||
server = new ServerSocket(0, 8, InetAddress.getByName("127.0.0.1"));
|
||||
Thread t = com.miniabs.net.Threads.create(this, "MiniABS proxy");
|
||||
Thread t = com.miniabs.net.Threads.create(this, "Podlite proxy");
|
||||
t.setDaemon(true);
|
||||
t.start();
|
||||
}
|
||||
@@ -90,7 +90,7 @@ final class StreamProxy implements Runnable {
|
||||
public void run() {
|
||||
serve(s);
|
||||
}
|
||||
}, "MiniABS proxy conn");
|
||||
}, "Podlite proxy conn");
|
||||
t.setDaemon(true);
|
||||
t.start();
|
||||
} catch (IOException e) {
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.miniabs.net.AssetRoots;
|
||||
import com.miniabs.net.CertVerifier;
|
||||
|
||||
/**
|
||||
* Decides which HTTPS certificates MiniABS accepts, for the bundled TLS 1.2 client:
|
||||
* Decides which HTTPS certificates Podlite accepts, for the bundled TLS 1.2 client:
|
||||
* 1. certificates chaining to Mozilla's roots (assets/roots; Android 2.3's own list predates Let's Encrypt);
|
||||
* 2. certificates the user chose to trust after checking the fingerprint ("pins").
|
||||
*/
|
||||
|
||||
@@ -37,7 +37,7 @@ import com.minamp.bc.crypto.util.PublicKeyFactory;
|
||||
* Minimal Web PKI path validation for the bundled TLS stack:
|
||||
* hostname match, validity window, signature chain up to a bundled Mozilla root.
|
||||
* Optionally one pinned leaf certificate (SHA-256) is trusted as-is, for self-signed servers.
|
||||
* Shared with Minamp (tools/tlskit in the iOS ports' history); keep the copies in sync.
|
||||
* Shared with Plexamp Lite (tools/tlskit in the iOS ports' history); keep the copies in sync.
|
||||
*/
|
||||
public final class CertVerifier {
|
||||
|
||||
|
||||
@@ -33,11 +33,11 @@ import com.minamp.bc.tls.crypto.impl.bc.BcTlsCrypto;
|
||||
/**
|
||||
* Small HTTP/1.1 client with its own TLS 1.2 (Bouncy Castle), keep-alive pooling and
|
||||
* session resumption. Android 2.x's built-in SSL only speaks TLS 1.0 and lacks today's roots,
|
||||
* so every request in the app goes through here. From Minamp; keep the copies in sync.
|
||||
* so every request in the app goes through here. From Plexamp Lite; keep the copies in sync.
|
||||
*/
|
||||
public final class Http {
|
||||
|
||||
public static String USER_AGENT = "Minamp/1.0";
|
||||
public static String USER_AGENT = "PlexampLite/1.0";
|
||||
|
||||
/** Optional HTTP CONNECT proxy, only used when running the networking code on a desktop JVM. */
|
||||
public static String proxyHost;
|
||||
|
||||
Reference in new issue
Block a user