Initial release of GPS2Audio

This commit is contained in:
Marcel Mayer
2026-05-05 20:54:05 +02:00
commit b2aa1c167c
48 changed files with 11570 additions and 0 deletions
@@ -0,0 +1,60 @@
package de.waypointaudio.data
/**
* Quelle der Begleitmusik für eine Tour.
*/
enum class MusicSourceType {
LOCAL_PLAYLIST,
STREAM_URL
}
/**
* Verhalten der Begleitmusik, wenn ein Wegpunkt-Audio abgespielt wird.
*/
enum class WaypointMusicBehavior {
/** Begleitmusik pausieren, danach fortsetzen. */
PAUSE_RESUME,
/** Begleitmusik ausblenden (Fade-out), Wegpunkt abspielen, danach einblenden (Fade-in). */
FADE_OUT_IN,
/** Begleitmusik auf duckVolume leise stellen, Wegpunkt parallel abspielen, danach wiederherstellen. */
DUCK_UNDERLAY,
/** Begleitmusik unveränderter Lautstärke weiterspielen, Wegpunkt parallel abspielen. */
CONTINUE_UNDERLAY
}
/**
* Ein einzelnes Element in der lokalen Playlist.
*/
data class PlaylistItem(
val uriString: String,
val displayName: String
)
/**
* Begleitmusik-Einstellungen für eine Tour.
*
* @param enabled Ob Begleitmusik für diese Tour aktiv ist.
* @param sourceType Quelle: lokale Playlist oder Stream-URL.
* @param localPlaylist Liste von Audiodateien (content:// URIs) aus dem lokalen Speicher.
* @param streamUrl Direkte HTTP/HTTPS-Stream-URL (z. B. Internetradio).
* @param behavior Verhalten wenn Wegpunkt-Audio abgespielt wird.
* @param fadeDurationMs Dauer des Fade-Effekts in Millisekunden.
* @param duckVolume Lautstärke (0.01.0) während des Duck-Modus.
* @param shuffle Playlist zufällig abspielen.
* @param autoStartAfterWaypoint Nach Wegpunkt-Audio Begleitmusik automatisch starten,
* auch wenn sie vorher nicht spielte.
*/
data class TourAudioSettings(
val enabled: Boolean = false,
val sourceType: MusicSourceType = MusicSourceType.LOCAL_PLAYLIST,
val localPlaylist: List<PlaylistItem> = emptyList(),
val streamUrl: String? = null,
val behavior: WaypointMusicBehavior = WaypointMusicBehavior.PAUSE_RESUME,
val fadeDurationMs: Long = 1500L,
val duckVolume: Float = 0.25f,
val shuffle: Boolean = false,
val autoStartAfterWaypoint: Boolean = false
)