wear und applaufen, allerdings wear ohne kmh
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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 = """
|
||||
<trkpt lat="${location.latitude}" lon="${location.longitude}">
|
||||
<ele>${location.altitude}</ele>
|
||||
<time>$time</time>
|
||||
</trkpt>
|
||||
""".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<File> {
|
||||
return context.filesDir.listFiles { _, name -> name.endsWith(".gpx") }?.toList() ?: emptyList()
|
||||
}
|
||||
|
||||
private fun getGpxHeader() = """
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gpx version="1.1" creator="WearGPSTracker" xmlns="http://www.topografix.com/GPX/1/1">
|
||||
<trk>
|
||||
<name>Track ${SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()).format(Date())}</name>
|
||||
<trkseg>
|
||||
""".trimIndent()
|
||||
|
||||
private fun getGpxFooter() = """
|
||||
</trkseg>
|
||||
</trk>
|
||||
</gpx>
|
||||
""".trimIndent()
|
||||
}
|
||||
Reference in New Issue
Block a user