No description
Find a file
2026-10-25 13:02:31 +01:00
app Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
gradle Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
.gitignore Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
build.gradle.kts Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
COPYRIGHT Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
gradle.properties Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
gradlew Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
gradlew.bat Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
LICENSE Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
README.md Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00
settings.gradle.kts Stand vom 2026-10-25 2026-10-25 13:02:31 +01:00

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 MediaSessionService inkl. 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 als android:tooltipText auch 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_player fü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.