Initial release of GPS2Audio
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package de.waypointaudio.data
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
/**
|
||||
* Abspiel-Modus für einen Wegpunkt.
|
||||
*
|
||||
* EVERY_ENTRY – Standardverhalten: Ton bei jedem erneuten Betreten.
|
||||
* ONCE – Ton nur beim ersten Betreten (playCount == 0).
|
||||
* LIMITED_COUNT – Ton maximal [maxPlayCount] Mal insgesamt.
|
||||
*/
|
||||
enum class PlaybackMode {
|
||||
EVERY_ENTRY,
|
||||
ONCE,
|
||||
LIMITED_COUNT
|
||||
}
|
||||
|
||||
/**
|
||||
* Datenmodell für einen Wegpunkt.
|
||||
*
|
||||
* @param id Eindeutige ID (UUID)
|
||||
* @param name Anzeigename des Wegpunkts
|
||||
* @param latitude Breitengrad in Dezimalgrad
|
||||
* @param longitude Längengrad in Dezimalgrad
|
||||
* @param radiusMeters Erkennungsradius in Metern
|
||||
* @param soundUri URI zur Audiodatei (content:// oder file://)
|
||||
* @param soundName Anzeigename der Audiodatei
|
||||
* @param isActive Ob der Wegpunkt aktiv überwacht wird
|
||||
* @param tourName Name der Tour/Route (Standard: "Standard"). Rückwärtskompatibel:
|
||||
* bestehende Wegpunkte ohne dieses Feld erhalten automatisch "Standard".
|
||||
*
|
||||
* --- Abspielregeln (optional, Standardwerte = bisheriges Verhalten) ---
|
||||
*
|
||||
* @param playbackMode Abspiel-Modus (Standard: EVERY_ENTRY = bisheriges Verhalten)
|
||||
* @param maxPlayCount Maximale Abspielanzahl für LIMITED_COUNT; null = kein Limit
|
||||
* @param playCount Bisherige Abspielanzahl (persistent, wird vom Service inkrementiert)
|
||||
* @param scheduleEnabled Ob der Zeitplan aktiv ist
|
||||
* @param scheduleStartMillis Frühestes Datum/Uhrzeit (Unix-Millisekunden), ab dem Abspielen erlaubt ist
|
||||
* @param scheduleEndMillis Spätestes Datum/Uhrzeit (Unix-Millisekunden), bis zu dem Abspielen erlaubt ist
|
||||
* @param allowedStartMinutes Tagesminute (0–1439), ab der das tägliche Zeitfenster beginnt
|
||||
* @param allowedEndMinutes Tagesminute (0–1439), bis zu der das tägliche Zeitfenster endet
|
||||
*/
|
||||
data class Waypoint(
|
||||
val id: String = UUID.randomUUID().toString(),
|
||||
val name: String = "",
|
||||
val latitude: Double = 0.0,
|
||||
val longitude: Double = 0.0,
|
||||
val radiusMeters: Float = 50f,
|
||||
val soundUri: String = "",
|
||||
val soundName: String = "",
|
||||
val isActive: Boolean = true,
|
||||
|
||||
// Tour-Zuordnung – safe default "Standard" für Rückwärtskompatibilität
|
||||
val tourName: String = DEFAULT_TOUR_NAME,
|
||||
|
||||
// Abspielregeln – alle optional, Standardwerte entsprechen bisherigem Verhalten
|
||||
val playbackMode: PlaybackMode = PlaybackMode.EVERY_ENTRY,
|
||||
val maxPlayCount: Int? = null,
|
||||
val playCount: Int = 0,
|
||||
val scheduleEnabled: Boolean = false,
|
||||
val scheduleStartMillis: Long? = null,
|
||||
val scheduleEndMillis: Long? = null,
|
||||
val allowedStartMinutes: Int? = null,
|
||||
val allowedEndMinutes: Int? = null
|
||||
) {
|
||||
companion object {
|
||||
/** Standard-Tourname für bestehende Wegpunkte ohne tourName-Feld. */
|
||||
const val DEFAULT_TOUR_NAME = "Standard"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user