I wanna write gpx file with DOM and Transformer
My code is like that
try {
val document =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()
val trkpt = document.createElement("trkpt")
trkpt.setAttribute("lat", "-33.626932")
trkpt.setAttribute("lon", "-33.626932")
val ele = document.createElement("ele")
ele.appendChild(document.createTextNode("-6"))
trkpt.appendChild(ele)
document.appendChild(trkpt)
val transformer = TransformerFactory.newInstance().newTransformer()
transformer.setOutputProperty(OutputKeys.METHOD,"gpx")
val saveFolder = File(folderPath) // 저장 경로
if (!saveFolder.exists()) { //폴더 없으면 생성
saveFolder.mkdir()
}
val path = "route_${System.currentTimeMillis()}.gpx"
val file = File(saveFolder, path) //로컬에 파일저장
val source = DOMSource(document)
//val result = StreamResult(FileOutputStream(file))
val result = StreamResult(System.out)
transformer.transform(source, result)
return Uri.fromFile(file)
}catch(e:Exception){
e.printStackTrace()
}
the out put is like this
<?xml version="1.0" encoding="UTF-8"?><trkpt lat="-33.626932" lon="-33.626932"><ele>-6</ele></trkpt>
But I wanna change the tag to , like this
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creator="TraceDeTrail http://www.tracedetrail.fr" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd ">
How can I edit like this, the attributes as well
the reason why I try to change from JPX to myself, is i need to get time from waypoint. enter image description here
Sometimes, I need to get time from WayPoint class, but the time's type is ZonedDateTime. but it's not work on SDK 24... is there any solution get time from waypoint?
I add the ThreeTenABP, but I don't know how I exactly use this. I add library on Gradle and init in app-instance but it still makes an error
wpList.add(
WayPoint.builder()
.lat(currentLatLng.latitude)
.lon(currentLatLng.longitude)
.name("Start")
.desc("Start Description")
.time(System.currentTimeMillis()) <- RunningActivity.kt:107
.type(START_POINT)
.build()
)
2020-05-06 16:46:16.895 8877-8877/com.umpa2020.tracer E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.umpa2020.tracer, PID: 8877
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/Instant;
at io.jenetics.jpx.WayPoint$Builder.time(WayPoint.java:767)
at com.umpa2020.tracer.main.start.running.RunningActivity.start(RunningActivity.kt:107)
at com.umpa2020.tracer.main.start.running.RunningActivity.onSingleClick(RunningActivity.kt:175)
at com.umpa2020.tracer.util.OnSingleClickListener$DefaultImpls.onClick(OnSingleClickListener.kt:19)
at com.umpa2020.tracer.main.start.BaseRunningActivity.onClick(BaseRunningActivity.kt:45)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.time.Instant" on path: DexPathList[[zip file "/data/app/com.umpa2020.tracer-2/base.apk"],nativeLibraryDirectories=[/data/app/com.umpa2020.tracer-2/lib/x86, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at io.jenetics.jpx.WayPoint$Builder.time(WayPoint.java:767)
at com.umpa2020.tracer.main.start.running.RunningActivity.start(RunningActivity.kt:107)
at com.umpa2020.tracer.main.start.running.RunningActivity.onSingleClick(RunningActivity.kt:175)
at com.umpa2020.tracer.util.OnSingleClickListener$DefaultImpls.onClick(OnSingleClickListener.kt:19)
at com.umpa2020.tracer.main.start.BaseRunningActivity.onClick(BaseRunningActivity.kt:45)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)