added a new helper class that converts a track into GPX - see issue #14
This commit is contained in:
		
							parent
							
								
									f12fc4fd20
								
							
						
					
					
						commit
						7b48e40c45
					
				
					 1 changed files with 108 additions and 0 deletions
				
			
		
							
								
								
									
										108
									
								
								app/src/main/java/org/y20k/trackbook/helpers/GpxHelper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								app/src/main/java/org/y20k/trackbook/helpers/GpxHelper.java
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,108 @@ | |||
| /** | ||||
|  * GpxHelper.java | ||||
|  * Implements the GpxHelper class | ||||
|  * A GpxHelper can convert Track object into a GPX string | ||||
|  * | ||||
|  * This file is part of | ||||
|  * TRACKBOOK - Movement Recorder for Android | ||||
|  * | ||||
|  * Copyright (c) 2016-17 - Y20K.org | ||||
|  * Licensed under the MIT-License | ||||
|  * http://opensource.org/licenses/MIT | ||||
|  * | ||||
|  * Trackbook uses osmdroid - OpenStreetMap-Tools for Android | ||||
|  * https://github.com/osmdroid/osmdroid | ||||
|  */ | ||||
| 
 | ||||
| package org.y20k.trackbook.helpers; | ||||
| 
 | ||||
| import android.location.Location; | ||||
| 
 | ||||
| import org.y20k.trackbook.core.Track; | ||||
| import org.y20k.trackbook.core.WayPoint; | ||||
| 
 | ||||
| import java.text.DateFormat; | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.Date; | ||||
| 
 | ||||
| /** | ||||
|  * GpxHelper class | ||||
|  */ | ||||
| public class GpxHelper { | ||||
| 
 | ||||
|     /* Define log tag */ | ||||
|     private static final String LOG_TAG = GpxHelper.class.getSimpleName(); | ||||
| 
 | ||||
| 
 | ||||
|     /* Main class variables */ | ||||
|     private final Track mTrack; | ||||
| 
 | ||||
| 
 | ||||
|     /* Constructor */ | ||||
|     public GpxHelper(Track track) { | ||||
|         mTrack = track; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /* Creates GPX formatted string */ | ||||
|     public String createGpxString() { | ||||
|         String gpxString; | ||||
| 
 | ||||
|         // add header | ||||
|         gpxString = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n" + | ||||
|                     "<gpx version=\"1.1\" creator=\"Transistor App (Android)\">\n"; | ||||
| 
 | ||||
|         // add track | ||||
|         gpxString = gpxString + addTrack(); | ||||
| 
 | ||||
|         // add closing tag | ||||
|         gpxString = gpxString + "</gpx>\n"; | ||||
| 
 | ||||
|         // todo remove | ||||
|         LogHelper.v(LOG_TAG, "GPX output:\n" + gpxString); | ||||
| 
 | ||||
|         return gpxString; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /* Creates Track */ | ||||
|     private String addTrack() { | ||||
|         StringBuilder gpxTrack = new StringBuilder(""); | ||||
|         DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); | ||||
| 
 | ||||
|         // add opening route tag | ||||
|         gpxTrack.append("\t<rte>\n"); | ||||
| 
 | ||||
|         // add route point | ||||
|         for (WayPoint wayPoint:mTrack.getWayPoints()) { | ||||
|             // get location from waypoint | ||||
|             Location location = wayPoint.getLocation(); | ||||
| 
 | ||||
|             // add longitude and latitude | ||||
|             gpxTrack.append("\t\t<rtept lat=\""); | ||||
|             gpxTrack.append(location.getLatitude()); | ||||
|             gpxTrack.append("\" lon=\""); | ||||
|             gpxTrack.append(location.getLongitude()); | ||||
|             gpxTrack.append("\">\n"); | ||||
| 
 | ||||
|             // add time | ||||
|             gpxTrack.append("\t\t\t<time>"); | ||||
|             gpxTrack.append(dateFormat.format(new Date(location.getTime()))); | ||||
|             gpxTrack.append("</time>\n"); | ||||
| 
 | ||||
|             // add altitude | ||||
|             gpxTrack.append("\t\t\t<ele>"); | ||||
|             gpxTrack.append(location.getAltitude()); | ||||
|             gpxTrack.append("</ele>\n"); | ||||
| 
 | ||||
|             // add closing tag | ||||
|             gpxTrack.append("\t\t</rtept>\n"); | ||||
|         } | ||||
| 
 | ||||
|         // add closing route tag | ||||
|         gpxTrack.append("\t</rte>\n"); | ||||
| 
 | ||||
|         return gpxTrack.toString(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in a new issue
	
	 y20k
						y20k