package de.tstratmann.gpstracker import android.content.Context import android.location.Location import java.io.File import java.text.SimpleDateFormat import java.util.* class GPXManager(private val context: Context) { private var currentFile: File? = null fun startNewSession(): File { val timeStamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date()) val fileName = "track_$timeStamp.gpx" val file = File(context.filesDir, fileName) file.writeText(getGpxHeader()) currentFile = file return file } fun appendLocation(location: Location) { currentFile?.let { file -> val time = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US).apply { timeZone = TimeZone.getTimeZone("UTC") }.format(Date(location.time)) val trkpt = """ ${location.altitude} """.trimIndent() val content = file.readText().removeSuffix(getGpxFooter()) file.writeText(content + trkpt + getGpxFooter()) } } fun getActivitiesCount(): Int { return context.filesDir.listFiles { _, name -> name.endsWith(".gpx") }?.size ?: 0 } fun getAllFiles(): List { return context.filesDir.listFiles { _, name -> name.endsWith(".gpx") }?.toList() ?: emptyList() } private fun getGpxHeader() = """ Track ${SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()).format(Date())} """.trimIndent() private fun getGpxFooter() = """ """.trimIndent() }