• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 
17 package com.android.locationtracker.data;
18 
19 import com.android.locationtracker.data.TrackerEntry.EntryType;
20 
21 import android.location.Location;
22 
23 /**
24  * Formats tracker data as KML output
25  */
26 class KMLFormatter implements IFormatter {
27 
getHeader()28     public String getHeader() {
29         LineBuilder builder = new LineBuilder();
30         builder.addLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
31         builder.addLine("<kml xmlns=\"http://earth.google.com/kml/2.2\">");
32         builder.addLine("<Document>");
33         return builder.toString();
34     }
35 
getFooter()36     public String getFooter() {
37         LineBuilder builder = new LineBuilder();
38         builder.addLine("</Document>");
39         builder.addLine("</kml>");
40         return builder.toString();
41     }
42 
getOutput(TrackerEntry entry)43     public String getOutput(TrackerEntry entry) {
44         LineBuilder builder = new LineBuilder();
45 
46         if (entry.getType() == EntryType.LOCATION_TYPE) {
47 
48             Location loc = entry.getLocation();
49             builder.addLine("<Placemark>");
50             builder.addLine("<description>");
51             builder.addLine("accuracy = " + loc.getAccuracy());
52             builder.addLine("distance from last network location  = "
53                     + entry.getDistFromNetLocation());
54             builder.addLine("</description>");
55             builder.addLine("<TimeStamp>");
56             builder.addLine("<when>" + entry.getTimestamp() + "</when>");
57             builder.addLine("</TimeStamp>");
58             builder.addLine("<Point>");
59             builder.addLine("<coordinates>");
60             builder.addLine(loc.getLongitude() + "," + loc.getLatitude() + ","
61                     + loc.getAltitude());
62             builder.addLine("</coordinates>");
63             builder.addLine("</Point>");
64             builder.addLine("</Placemark>");
65         }
66         return builder.toString();
67     }
68 
69     private static class LineBuilder {
70         private StringBuilder mBuilder;
71 
LineBuilder()72         public LineBuilder() {
73             mBuilder = new StringBuilder();
74         }
75 
addLine(String line)76         public void addLine(String line) {
77             mBuilder.append(line);
78             mBuilder.append("\n");
79         }
80 
81         @Override
toString()82         public String toString() {
83             return mBuilder.toString();
84         }
85 
86     }
87 
88 }
89