My frist Android app, this is simple GPS tracker program that let us record our tracks, store and share them.
This project uses my custom TabWidget for Android.
Main features
- Record
- Playback
- Share via Email (Google Earth)
- Share via Twitter (in progress)
- Exporting to SD Card
- Tagging (in progress)
I use icon from http://www.dryicons.com , love their methodology give the little guys an edge by providing free high quality designs.
Screenshots
[nggallery id=2]
To Come
Here are some other features that I will implement soon
- Altitude profiler
- Photos
- Profiles
Greg, hi ,
I ran into your blog looking for “simple gps tracker”
Any chance i could use the code you’ve created for a reference ?
I’m a uni student looking to do a tracker app with additional stuff in it, like matching my call-log to geo-locations.
Hope you say yes.
I’m at arie.coach@gmail.com
Thanks.
Arie
Hey,
You posted you will have the code hosted here…
can i use the code?
when will you post it??
i realy need to see the tab widget and the gps playback…
Thank you for gr8 Blog
I will clean it up and post it on Monday, also I have created a demo project for the TabWidget which also will be posted Monday. BTW what Android SDK are you using?
Hi, im very interested in the source code too as i require them in my application. Please post it up asap.
Thanks!
Hi,
I am very interested in seeing example source code for your TabWidget component. If you are not willing to release the whole Carme GPS Tracker source, could you give a fuller example of using TabWidget?
Thanks 🙂
I have no problem with releasing the source it is just not cleaned up, busy with couple other projects. But I have the TabWidgetDemo here
I need you release the whole Carme GPS Tracker source code……please
I beg you
why??? the Carme GPS Tracker source code can not Track….
I even can not use GPX…..
Thanks for help carme
Hello
if you have an idea that can help me I would be grateful
So i should create a web service wich will communicate with my android application .in my android app the client choose two point start and arrival this two point will be send to my web service to find the bus that has the shortest path between them. i have a probleme in web service side I try to use Dijkstra’s algorithm to find the shortest path between two points. to test the Dijkstra algorithm I must extract data from a mysql database and not put it right into my algorithm.but i dont Khnow how can i do it . secondly I do not know exactly what are the classes and functions that I need to do this web service.
in my database I have two table that contains the bus route (bus num), code (station id), pt_arret (station name). and another table which contains location code (id station), latitude and longitude, and distance (is the distance between a station and the station which precedes.
(im sorry for the mistacke of spelling because i don’t speak english very fluently)
thanks in advance
Hello this is how I clean up my data before converting it to a xml document.
This is static entity map, you might not have to use this if don’t need to.
static{
entityMap.put("nbsp", " ");
entityMap.put("iexcl", "¡");
entityMap.put("cent", "¢");
entityMap.put("pound", "£");
entityMap.put("curren", "¤");
entityMap.put("yen", "¥");
entityMap.put("brvbar", "¦");
entityMap.put("sect", "§");
entityMap.put("uml", "¨");
entityMap.put("copy", "©");
entityMap.put("ordf", "ª");
entityMap.put("laquo", "«");
entityMap.put("not", "¬");
entityMap.put("shy", "");
entityMap.put("reg", "®");
entityMap.put("macr", "¯");
entityMap.put("deg", "°");
entityMap.put("plusmn", "±");
entityMap.put("sup2", "²");
entityMap.put("sup3", "³");
entityMap.put("acute", "´");
entityMap.put("micro", "µ");
entityMap.put("para", "¶");
entityMap.put("middot", "·");
entityMap.put("cedil", "¸");
entityMap.put("sup1", "¹");
entityMap.put("ordm", "º");
entityMap.put("raquo", "»");
entityMap.put("frac14", "¼");
entityMap.put("frac12", "½");
entityMap.put("frac34", "¾");
entityMap.put("iquest", "¿");
entityMap.put("Agrave", "À");
entityMap.put("Aacute", "Á");
entityMap.put("Acirc", "Â");
entityMap.put("Atilde", "Ã");
entityMap.put("Auml", "Ä");
entityMap.put("Aring", "Å");
entityMap.put("AElig", "Æ");
entityMap.put("Ccedil", "Ç");
entityMap.put("Egrave", "È");
entityMap.put("Eacute", "É");
entityMap.put("Ecirc", "Ê");
entityMap.put("Euml", "Ë");
entityMap.put("Igrave", "Ì");
entityMap.put("Iacute", "Í");
entityMap.put("Icirc", "Î");
entityMap.put("Iuml", "Ï");
entityMap.put("ETH", "Ð");
entityMap.put("Ntilde", "Ñ");
entityMap.put("Ograve", "Ò");
entityMap.put("Oacute", "Ó");
entityMap.put("Ocirc", "Ô");
entityMap.put("Otilde", "Õ");
entityMap.put("Ouml", "Ö");
entityMap.put("times", "×");
entityMap.put("Oslash", "Ø");
entityMap.put("Ugrave", "Ù");
entityMap.put("Uacute", "Ú");
entityMap.put("Ucirc", "Û");
entityMap.put("Uuml", "Ü");
entityMap.put("Yacute", "Ý");
entityMap.put("THORN", "Þ");
entityMap.put("szlig", "ß");
entityMap.put("agrave", "à");
entityMap.put("aacute", "á");
entityMap.put("acirc", "â");
entityMap.put("atilde", "ã");
entityMap.put("auml", "ä");
entityMap.put("aring", "å");
entityMap.put("aelig", "æ");
entityMap.put("ccedil", "ç");
entityMap.put("egrave", "è");
entityMap.put("eacute", "é");
entityMap.put("ecirc", "ê");
entityMap.put("euml", "ë");
entityMap.put("igrave", "ì");
entityMap.put("iacute", "í");
entityMap.put("icirc", "î");
entityMap.put("iuml", "ï");
entityMap.put("eth", "ð");
entityMap.put("ntilde", "ñ");
entityMap.put("ograve", "ò");
entityMap.put("oacute", "ó");
entityMap.put("ocirc", "ô");
entityMap.put("otilde", "õ");
entityMap.put("ouml", "ö");
entityMap.put("divide", "÷");
entityMap.put("oslash", "ø");
entityMap.put("ugrave", "ù");
entityMap.put("uacute", "ú");
entityMap.put("ucirc", "û");
entityMap.put("uuml", "ü");
entityMap.put("yacute", "ý");
entityMap.put("thorn", "þ");
entityMap.put("yuml", "ÿ");
entityMap.put("fnof", "À");
entityMap.put("Alpha", "Α");
entityMap.put("Beta", "Β");
entityMap.put("Gamma", "Γ");
entityMap.put("Delta", "Δ");
entityMap.put("Epsilon", "Ε");
entityMap.put("Zeta", "Ζ");
entityMap.put("Eta", "Η");
entityMap.put("Theta", "Θ");
entityMap.put("Iota", "Ι");
entityMap.put("Kappa", "Κ");
entityMap.put("Lambda", "Λ");
entityMap.put("Mu", "Μ");
entityMap.put("Nu", "Ν");
entityMap.put("Xi", "Ξ");
entityMap.put("Omicron", "Ο");
entityMap.put("Pi", "Π");
entityMap.put("Rho", "Ρ");
entityMap.put("Sigma", "Σ");
entityMap.put("Tau", "Τ");
entityMap.put("Upsi", "Υ");
entityMap.put("Phi", "Φ");
entityMap.put("Chi", "Χ");
entityMap.put("Psi", "Ψ");
entityMap.put("Omega", "Ω");
entityMap.put("alpha", "α");
entityMap.put("beta", "β");
entityMap.put("gamma", "γ");
entityMap.put("delta", "δ");
entityMap.put("epsi", "ε");
entityMap.put("zeta", "ζ");
entityMap.put("eta", "η");
entityMap.put("theta", "θ");
entityMap.put("iota", "ι");
entityMap.put("kappa", "κ");
entityMap.put("lambda", "λ");
entityMap.put("mu", "μ");
entityMap.put("nu", "ν");
entityMap.put("xi", "ξ");
entityMap.put("omicron", "ο");
entityMap.put("pi", "π");
entityMap.put("rho", "ρ");
entityMap.put("sigmaf", "ς");
entityMap.put("sigma", "σ");
entityMap.put("tau", "τ");
entityMap.put("upsi", "υ");
entityMap.put("phi", "φ");
entityMap.put("chi", "χ");
entityMap.put("psi", "ψ");
entityMap.put("omega", "ω");
entityMap.put("theta", "ϑ");
entityMap.put("upsih", "ϒ");
entityMap.put("piv", "ϖ");
entityMap.put("bull", "•");
entityMap.put("hellip", "…");
entityMap.put("prime", "′");
entityMap.put("Prime", "″");
entityMap.put("oline", "‾");
entityMap.put("frasl", "⁄");
entityMap.put("weierp", "℘");
entityMap.put("image", "ℑ");
entityMap.put("real", "ℜ");
entityMap.put("trade", "™");
entityMap.put("alefsym", "ℵ");
entityMap.put("larr", "←");
entityMap.put("uarr", "↑");
entityMap.put("rarr", "→");
entityMap.put("darr", "↓");
entityMap.put("harr", "↔");
entityMap.put("crarr", "↵");
entityMap.put("lArr", "⇐");
entityMap.put("uArr", "⇑");
entityMap.put("rArr", "⇒");
entityMap.put("dArr", "⇓");
entityMap.put("hArr", "⇔");
entityMap.put("forall", "∀");
entityMap.put("part", "∂");
entityMap.put("exist", "∃");
entityMap.put("empty", "∅");
entityMap.put("nabla", "∇");
entityMap.put("isin", "∈");
entityMap.put("notin", "∉");
entityMap.put("ni", "∋");
entityMap.put("prod", "∏");
entityMap.put("sum", "−");
entityMap.put("minus", "−");
entityMap.put("lowast", "∗");
entityMap.put("radic", "√");
entityMap.put("prop", "∝");
entityMap.put("infin", "∞");
entityMap.put("ang", "∠");
entityMap.put("and", "⊥");
entityMap.put("or", "⊦");
entityMap.put("cap", "∩");
entityMap.put("cup", "∪");
entityMap.put("int", "∫");
entityMap.put("there4", "∴");
entityMap.put("sim", "∼");
entityMap.put("cong", "≅");
entityMap.put("asymp", "≅");
entityMap.put("ne", "≠");
entityMap.put("equiv", "≡");
entityMap.put("le", "≤");
entityMap.put("ge", "≥");
entityMap.put("sub", "⊂");
entityMap.put("sup", "⊃");
entityMap.put("nsub", "⊄");
entityMap.put("sube", "⊆");
entityMap.put("supe", "⊇");
entityMap.put("oplus", "⊕");
entityMap.put("otimes", "⊗");
entityMap.put("perp", "⊥");
entityMap.put("sdot", "⋅");
entityMap.put("lceil", "⌈");
entityMap.put("rceil", "⌉");
entityMap.put("lfloor", "⌊");
entityMap.put("rfloor", "⌋");
entityMap.put("lang", "〈");
entityMap.put("loz", "◊");
entityMap.put("spades", "♠");
entityMap.put("clubs", "♣");
entityMap.put("hearts", "♥");
entityMap.put("diams", "♦");
entityMap.put("quot", """);
entityMap.put("amp", "&");
entityMap.put("lt", "<");
entityMap.put("gt", ">");
entityMap.put("OElig", "Œ");
entityMap.put("oelig", "œ");
entityMap.put("Scaron", "Š");
entityMap.put("scaron", "š");
entityMap.put("Yuml", "Ÿ");
entityMap.put("circ", "ˆ");
entityMap.put("tilde", "˜");
entityMap.put("ensp", " ");
entityMap.put("emsp", " ");
entityMap.put("thinsp", " ");
entityMap.put("zwnj", "");
entityMap.put("zwj", "");
entityMap.put("lrm", "");
entityMap.put("rlm", "");
entityMap.put("ndash", "–");
entityMap.put("mdash", "—");
entityMap.put("lsquo", "‘");
entityMap.put("rsquo", "’");
entityMap.put("sbquo", "‚");
entityMap.put("ldquo", "“");
entityMap.put("rdquo", "”");
entityMap.put("bdquo", "„");
entityMap.put("dagger", "†");
entityMap.put("Dagger", "‡");
entityMap.put("permil", "‰");
entityMap.put("lsaquo", "‹");
entityMap.put("rsaquo", "›");
}
Code that does the actual cleanup
String convertedData = writer.getBuffer().toString();
// This is to prevent 'org.xml.sax.SAXParseException: Already seen
// doctype.' exception
// //
convertedData = convertedData.replaceAll("", "");
/*
*
*/
// TODO : Clean up using : http://www.w3.org/TR/WD-entities-961125 and entry = iterator.next();
// http://www.rgagnon.com/javadetails/java-0307.html
StringBuffer buffer = new StringBuffer();
buffer.append(" " + " > iterator = entityMap.entrySet().iterator();
while (iterator.hasNext()) {
Entry
buffer.append("");
}
buffer.append(" ]>");
buffer.append(convertedData);
convertedData = buffer.toString();