No description
- Kotlin 100%
| app | ||
| gradle | ||
| .gitignore | ||
| build.gradle.kts | ||
| COPYRIGHT | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
FIP
Native Android-App für den Radiosender FIP (Radio France) — ein Tipp bis zur Musik, wie das alte FIP-Widget. Kein WebView, kein Login, keine Werbung.
Funktionen
- 13 Kanäle (FIP + Themen- und Webradios) in einer scrollbaren Senderspalte.
- Homescreen-Widget, das mitwächst: schmal nur der Knopf, größer mit Cover, Titel, Interpret und „Album · Jahr". Anmutung je Kachel wählbar (Gedämpft/Glas/Voll/Systemfarben).
- Sperrbildschirm- und Bluetooth-Steuerung über Media3
MediaSessionServiceinkl. Cover als echte Bilddaten (für AVRCP/Autoradio) und „Album · Jahr" im Album-Feld. - Live-Vorschau ohne Play: beim Öffnen zeigt die App, was gerade sendet — tonlos.
- Verlauf der vom Sender ausgespielten Titel (füllt sich, während die App läuft).
- Merken: Favoriten rein lokal, mit Herz auch vom Sperrbildschirm aus.
- Titelangaben herausgeben: langer Druck auf eine Zeile (oder auf die Titelangaben im
Hauptfenster) legt einen Titel in die Zwischenablage; der Knopf oben in Verlauf und
Merkliste gibt die ganze Liste heraus – als CSV in eine selbst gewählte Datei
(
ACTION_CREATE_DOCUMENT, keine Speicherberechtigung nötig) oder komplett in die Zwischenablage. Das ist keine Sicherung: hier kommen lesbare Angaben heraus, keine wieder einspielbaren Daten. - Und zwar so, wie man will → Titelangaben einstellen.
Titelangaben einstellen
Erreichbar über den Schieberegler-Knopf in der Kopfzeile des Hauptfensters, außerdem als Eintrag „Angaben einstellen …" im Herausgeben-Dialog und als Aktion in der Meldung nach dem Kopieren.
- Sieben Felder – Interpret, Titel, Album, Jahr, Sender, Datum, Uhrzeit – einzeln an- und abwählbar und mit ▲▼ umsortierbar.
- Zwei getrennte Einstellungen (
Kopierformat.Zweck): eine für die Zwischenablage, eine für die CSV-Tabelle. Die eine Zeile zum Weiterschicken verträgt weniger als eine Tabellenspalte. - Trennzeichen für die Zwischenablage:
·,–,,oder Zeilenumbruch. Bei Umbruch trennt die Liste mit einer Leerzeile, sonst liefe sie zu einem Block zusammen. - Vorschau an einem erfundenen Beispieltitel, die bei jedem Haken sofort mitzieht.
- Zwei Zusammenziehregeln: Interpret und Titel nebeneinander werden zu „Interpret – Titel" (außer bei Trenner = Umbruch), Datum und Uhrzeit nebeneinander ergeben in der Tabelle eine Spalte.
- Die Zeitspalte heißt je Liste anders: im Verlauf „Gesendet um" – das ist die echte Sendezeit von Radio France, nicht der Zeitpunkt des Hörens –, bei den Favoriten „Gemerkt am". Dasselbe Feld, zwei Bedeutungen.
- Gespeichert wird die ganze Reihenfolge samt abgewählter Felder (
-datum), damit ein Feld beim Abwählen seinen Platz behält; später hinzukommende Felder werden beim Einlesen hinten angehängt, eine alte Einstellung überlebt also ein Update.
Übernommen aus der Schwester-App ByteFM, dort um Album und Jahr erweitert, die FIP im Gegensatz zu ByteFM mitliefert.
Technik
- Media3/ExoPlayer als
MediaSessionService, plain Views + Material 3 (kein Compose). minSdk 24,target/compile 35.- Kopfzeilen-Knöpfe tragen beim langen Druck ihren Namen (
TooltipCompat, wirkt anders alsandroid:tooltipTextauch unter Android 8) — Symbole allein tragen nicht. - Build mit JDK 21 (Gradle 8.13):
JAVA_HOME=/usr/lib/jvm/java-21-temurin-jdk ./gradlew assembleRelease - Metadaten aus
api.radiofrance.fr/livemeta/pull/<id>(Album/Jahr/Cover) bzw.livemeta/live/<id>/apprf_fip_playerfür Kanäle ohne pull-Endpunkt.
Verteilung
Release-APKs werden außerhalb dieses Repos mit einem eigenen Schlüssel signiert. Der
Debug-Keystore in build.gradle.kts dient nur dem Testen.