diff --git a/.classpath b/.classpath
index 609aa00..a6d83fa 100644
--- a/.classpath
+++ b/.classpath
@@ -1,7 +1,10 @@
+
+
+
+
-
-
+
diff --git a/.gitignore b/.gitignore
index 1e2ea35..38b2c60 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,4 @@ gen
tests/bin
tests/gen
Thumbs.db
-
+.dotcloud
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b080d2d
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9bc83e7..334ca3d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,9 +1,9 @@
-
+
@@ -14,15 +14,35 @@
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/README b/README
index 353e9e3..aeef2c5 100644
--- a/README
+++ b/README
@@ -1,3 +1,8 @@
+Modified for OpenBike
+-----------
+OpenBike adds qualitative ratings for safety, ease of use, and convenience.
+The modified codebase has been updated with OpenBike related services.
+
CycleTracks
-----------
Copyright 2009, 2010 San Francisco County Transportation Authority
diff --git a/art/android-icon.png b/art/android-icon.png
index b0a2529..0740093 100644
Binary files a/art/android-icon.png and b/art/android-icon.png differ
diff --git a/art/android-icon.svg b/art/android-icon.svg
deleted file mode 100644
index 879c6a9..0000000
--- a/art/android-icon.svg
+++ /dev/null
@@ -1,161 +0,0 @@
-
-
-
-
diff --git a/art/icon48.png b/art/icon48.png
index 8453471..1d5881b 100644
Binary files a/art/icon48.png and b/art/icon48.png differ
diff --git a/cycletracks-nodejs-api.js b/cycletracks-nodejs-api.js
new file mode 100644
index 0000000..c1bb436
--- /dev/null
+++ b/cycletracks-nodejs-api.js
@@ -0,0 +1,58 @@
+/* Before we begin, prepare to use nano to write to CouchDB, create a reference to particular
+ * database we'll be using. Prepare to use querystring to parse the POST data, and of course
+ * prepare to use the HTTP library
+ */
+
+var qs = require('querystring');
+var http = require('http');
+var tracks = require('nano')('https://ougeremseratontsedisamen:QLbVnxIDp0cHSqGgtOiMDyCR@openbike.cloudant.com/openbike');
+
+http.createServer(function (req, res) {
+ // Only process POST requests (below, if non-POST, we show a debug form)
+ if (req.method === "POST") {
+ var body = "";
+ // Grab POST data one chunk at a time and aggregate.
+ req.on('data', function(chunk) { body += chunk; });
+ req.on('end', function() {
+ // Filter out the odd empty request.
+ if (body) {
+ // console.log( 'Received via POST: ' + body );
+ // decodedBody = decodeURIComponent( body );
+ // console.log('Decoded: ' + decodedBody);
+
+ try {
+ // CouchDB expects a genuine JSON object
+ var couchInput = qs.parse(body);
+ } catch ( err ) {
+ console.log('Error: JSON parsing');
+ res.writeHead( 500, {'Content-Type': 'application/json'});
+ res.write( '{ "status":"error", "msg":"json parse error" }' );
+ return;
+ }
+
+ // console.log('Updating CouchDB with ' + JSON.stringify(couchInput));
+
+ // Create a (probably) unique name for
+ var epoch = new Date().getTime().toString() + '_' + ( Math.floor( Math.random() * 1000 ) + 1 );
+ console.log(epoch);
+ tracks.insert(couchInput, epoch, function (err, body) { if (err) console.error(err); });
+ res.writeHead(200, {'Content-Type': 'application/json'});
+ res.write( '{"status":"success"}' );
+ }
+ });
+ } else {
+ // Not a POST request, show a debug form where you can paste JSON
+ dummyHTML =
+ '
Node.js test page for Cycletracks API' +
+ '' +
+ '';
+ res.writeHead(200, {'Content-Type': 'text/html'} );
+ res.end(dummyHTML);
+ }
+}).listen(1337);
+
+console.log('Server running on port 1337');
+
\ No newline at end of file
diff --git a/default.properties b/default.properties
deleted file mode 100644
index 3bbc9c1..0000000
--- a/default.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system use,
-# "build.properties", and override values to adapt the script to your
-# project structure.
-
-# Project target.
-target=Google Inc.:Google APIs:4
-# Indicates whether an apk should be generated for each density.
-split.density=false
diff --git a/lib/android-support-v13.jar b/lib/android-support-v13.jar
new file mode 100644
index 0000000..8217756
Binary files /dev/null and b/lib/android-support-v13.jar differ
diff --git a/lib/google-play-services_lib/.classpath b/lib/google-play-services_lib/.classpath
new file mode 100644
index 0000000..a4763d1
--- /dev/null
+++ b/lib/google-play-services_lib/.classpath
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/lib/google-play-services_lib/AndroidManifest.xml b/lib/google-play-services_lib/AndroidManifest.xml
new file mode 100644
index 0000000..b3b5297
--- /dev/null
+++ b/lib/google-play-services_lib/AndroidManifest.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/lib/google-play-services_lib/README.txt b/lib/google-play-services_lib/README.txt
new file mode 100644
index 0000000..cf6f185
--- /dev/null
+++ b/lib/google-play-services_lib/README.txt
@@ -0,0 +1,14 @@
+Library Project including Google Play services client jar.
+
+This can be used by an Android project to use the API's provided
+by Google Play services.
+
+There is technically no source, but the src folder is necessary
+to ensure that the build system works. The content is actually
+located in the libs/ directory.
+
+
+USAGE:
+
+Make sure you import this Android library project into your IDE
+and set this project as a dependency.
diff --git a/lib/google-play-services_lib/google-play-services_lib.iml b/lib/google-play-services_lib/google-play-services_lib.iml
new file mode 100644
index 0000000..91fdf70
--- /dev/null
+++ b/lib/google-play-services_lib/google-play-services_lib.iml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/google-play-services_lib/libs/google-play-services.jar b/lib/google-play-services_lib/libs/google-play-services.jar
new file mode 100644
index 0000000..046fbbe
Binary files /dev/null and b/lib/google-play-services_lib/libs/google-play-services.jar differ
diff --git a/lib/google-play-services_lib/libs/google-play-services.jar.properties b/lib/google-play-services_lib/libs/google-play-services.jar.properties
new file mode 100644
index 0000000..429687b
--- /dev/null
+++ b/lib/google-play-services_lib/libs/google-play-services.jar.properties
@@ -0,0 +1 @@
+doc=../../../docs/reference
diff --git a/lib/google-play-services_lib/project.properties b/lib/google-play-services_lib/project.properties
new file mode 100644
index 0000000..db721fd
--- /dev/null
+++ b/lib/google-play-services_lib/project.properties
@@ -0,0 +1,15 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-8
+android.library=true
diff --git a/lib/google-play-services_lib/res/values-af/strings.xml b/lib/google-play-services_lib/res/values-af/strings.xml
new file mode 100644
index 0000000..5ce7737
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-af/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Kry Google Play-dienste"
+ "Hierdie program sal nie loop sonder Google Play-dienste nie, wat nie op jou foon is nie."
+ "Hierdie program sal nie loop sonder Google Play-dienste nie, wat nie op jou tablet is nie."
+ "Kry Google Play-dienste"
+ "Aktiveer Google Play-dienste"
+ "Hierdie program sal nie werk tensy jy Google Play-dienste aktiveer nie."
+ "Aktiveer Google Play-dienste"
+ "Dateer Google Play-dienste op"
+ "Hierdie program sal nie loop nie, tensy jy Google Play-dienste opdateer."
+ "Onbekende probleem met Google Play-dienste."
+ "Google Play-dienste"
+ "Google Play-dienste, waarop sommige van jou programme staatmaak, werk nie met jou toestel nie. Kontak asseblief die vervaardiger vir bystand."
+ "Dateer op"
+ "Meld aan met Google"
+
+ "Installeer/dateer op/aktiveer Google Play-dienste"
+ "Google Play-dienstefout"
+ "Versoek deur %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-am/strings.xml b/lib/google-play-services_lib/res/values-am/strings.xml
new file mode 100644
index 0000000..09d5b51
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-am/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Google Play አገልግሎቶችን አግኝ"
+ "ይህ መተግበሪያ ያለ Google Play አገልግሎቶች አይሰራም፣ እነሱ ደግሞ ስልክዎ ላይ የሉም።"
+ "ይህ መተግበሪያ ያለ Google Play አገልግሎቶች አይሰራም፣ እነሱ ደግሞ ጡባዊዎ ላይ የሉም።"
+ "Google Play አገልግሎቶችን አግኝ"
+ "Google Play አገልግሎቶችን አንቃ"
+ "Google Play አገልግሎቶችን እስካላነቁ ድረስ ይህ መተግበሪያ አይሰራም።"
+ "Google Play አገልግሎቶችን አንቃ"
+ "Google Play አገልግሎቶችን ያዘምኑ"
+ "Google Play አገልግሎቶችን እስኪያዘምኑ ድረስ ይህ መተግበሪያ አይሰራም።"
+ "በGoogle Play አገልግሎቶች ላይ ያልታወቀ ችግር።"
+ "Google Play አገልግሎቶች"
+ "የGoogle Play አገልግሎቶች፣ አንዳንድ መተግበሪያዎችዎ በእሱ ላይ ጥገኛ የሆኑት፣ በመሣሪያዎ አይደገፍም። እባክዎ ለእርዳታ አምራቹን ያግኙ።"
+ "ያዘምኑ"
+ "በGoogle ይግቡ"
+
+ "የGoogle Play አገልግሎቶችን ይጫኑ/ያዘምኑ/ያንቁ"
+ "የGoogle Play አገልግሎቶች ስህተት"
+ "በ%1$s የተጠየቀ"
+
diff --git a/lib/google-play-services_lib/res/values-ar/strings.xml b/lib/google-play-services_lib/res/values-ar/strings.xml
new file mode 100644
index 0000000..0c9dc6b
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-ar/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "الحصول على خدمات Google Play"
+ "لن يتم تشغيل هذا التطبيق بدون خدمات Google Play، والتي لا تتوفر في هاتفك."
+ "لن يتم تشغيل هذا التطبيق بدون خدمات Google Play، والتي لا تتوفر في جهازك اللوحي."
+ "الحصول على خدمات Google Play"
+ "تمكين خدمات Google Play"
+ "لن يعمل هذا التطبيق ما لم يتم تمكين خدمات Google Play."
+ "تمكين خدمات Google Play"
+ "تحديث خدمات Google Play"
+ "لن يتم تشغيل هذا التطبيق ما لم تحدِّث خدمات Google Play."
+ "حدثت مشكلة غير معروفة في خدمات Google Play."
+ "خدمات Google Play"
+ "خدمات Google Play التي تستجيب لها بعض تطبيقاتك لا تعمل على جهازك. يُرجى الاتصال بجهة التصنيع للحصول على المساعدة."
+ "تحديث"
+ "تسجيل الدخول باستخدام Google"
+
+ "تثبيت/تحديث/تمكين خدمات Google Play"
+ "خطأ في خدمات Google Play"
+ "تم الطلب عن طريق %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-be/strings.xml b/lib/google-play-services_lib/res/values-be/strings.xml
new file mode 100644
index 0000000..2093043
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-be/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Атрымаць службы Google Play"
+ "Гэта прыкладанне не будзе працаваць без службаў Google Play, якіх няма ў вашым тэлефоне."
+ "Гэта прыкладанне не будзе працаваць без службаў Google Play, якіх няма на вашым планшэце."
+ "Атрымаць службы Google Play"
+ "Уключыць службы Google Play"
+ "Гэта прыкладанне не будзе працаваць, пакуль вы не ўключыце службы Google Play."
+ "Уключыць службы Google Play"
+ "Абнаўленне службаў Google Play"
+ "Гэта прыкладанне не будзе працаваць падчас абнаўлення службаў Google Play."
+ "Невядомая праблема са службамі Google Play."
+ "Службы Google Play"
+ "Службы Google Play, да якiх прывязаны некаторыя прыкладаннi, не падтрымлiваюцца на вашай прыладзе. Па дапамогу звярнiцеся да вытворцы."
+ "Абнавіць"
+ "Увайсці ў Google"
+
+ "Усталяваць/Абнавіць/Уключыць службы Google Play"
+ "Памылка службаў Google Play"
+ "Запытана прыкладаннем %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-bg/strings.xml b/lib/google-play-services_lib/res/values-bg/strings.xml
new file mode 100644
index 0000000..39e0211
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-bg/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Изтегляне на услугите за Google Play"
+ "Това приложение няма да се изпълнява без услугите за Google Play, които липсват в телефона ви."
+ "Това приложение няма да се изпълнява без услугите за Google Play, които липсват в таблета ви."
+ "Услуги за Google Play: Изтегл."
+ "Активиране на услугите за Google Play"
+ "Това приложение няма да работи, освен ако не активирате услугите за Google Play."
+ "Услуги за Google Play: Актив."
+ "Актуализиране на услугите за Google Play"
+ "Това приложение няма да се изпълнява, освен ако не актуализирате услугите за Google Play."
+ "Неизвестен проблем с услугите за Google Play."
+ "Услуги за Google Play"
+ "Услугите за Google Play, на които разчитат някои от приложенията ви, не се поддържат от устройството ви. Моля, свържете се с производителя за помощ."
+ "Актуализиране"
+ "Вход с Google"
+
+ "Инсталиране/актуализиране/активиране на услугите за Google Play"
+ "Грешка в услугите за Google Play"
+ "Заявено от %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-ca/strings.xml b/lib/google-play-services_lib/res/values-ca/strings.xml
new file mode 100644
index 0000000..04d4934
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-ca/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Obtenció de Google Play Services"
+ "Aquesta aplicació no s\'executarà si el telèfon no té instal·lat Google Play Services."
+ "Aquesta aplicació no funcionarà si la tauleta no té Google Play Services instal·lat."
+ "Obtén Google Play Services"
+ "Activa Google Play Services"
+ "Aquesta aplicació no funcionarà si no actives Google Play Services."
+ "Activa Google Play Services"
+ "Actualització de Google Play Services"
+ "Aquesta aplicació no s\'executarà si no actualitzes Google Play Services."
+ "Problema desconegut amb Google Play Services."
+ "Google Play Services"
+ "Google Play Services, en què es basen algunes de les teves aplicacions, no és compatible amb el teu dispositiu. Contacta amb el fabricant per obtenir assistència."
+ "Actualitza"
+ "Inicia sessió amb Google"
+
+ "Instal·lació/actualització/activació de Google Play Services"
+ "Error de Google Play Services"
+ "Sol·licitat per %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-cs/strings.xml b/lib/google-play-services_lib/res/values-cs/strings.xml
new file mode 100644
index 0000000..4c85718
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-cs/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Instalovat služby Google Play"
+ "Ke spuštění této aplikace jsou potřeba služby Google Play, které v telefonu nemáte."
+ "Ke spuštění této aplikace jsou potřeba služby Google Play, které v tabletu nemáte."
+ "Instalovat služby Google Play"
+ "Aktivovat služby Google Play"
+ "Ke spuštění této aplikace je třeba aktivovat služby Google Play."
+ "Aktivovat služby Google Play"
+ "Aktualizace služeb Google Play"
+ "Ke spuštění této aplikace je třeba aktualizovat služby Google Play."
+ "Nastal neznámý problém se službami Google Play."
+ "Služby Google Play"
+ "Některé vaše aplikace vyžadují služby Google Play, které ve vašem zařízení nejsou podporovány. S žádostí o pomoc se prosím obraťte na výrobce."
+ "Aktualizovat"
+ "Přihlásit se k účtu Google"
+
+ "Instalovat/Aktualizovat/Povolit služby Google Play"
+ "Chyba služeb Google Play"
+ "Požadováno aplikací %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-da/strings.xml b/lib/google-play-services_lib/res/values-da/strings.xml
new file mode 100644
index 0000000..6cb56b0
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-da/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Hent Google Play-tjenester"
+ "Denne app kan ikke køre uden Google Play-tjenester, som mangler på din telefon."
+ "Denne app kan ikke køre uden Google Play-tjenester, som mangler på din tablet."
+ "Hent Google Play-tjenester"
+ "Aktivér Google Play-tjenester"
+ "Denne app virker ikke, medmindre du aktiverer Google Play-tjenester."
+ "Aktivér Google Play-tjenester"
+ "Opdater Google Play-tjenester"
+ "Denne app kan ikke køre, medmindre du opdaterer Google Play-tjenester."
+ "Ukendt problem med Google Play-tjenester."
+ "Google Play-tjenester"
+ "Google Play-tjenester, som nogle af dine applikationer er afhængige af, understøttes ikke af din enhed. Kontakt producenten for at få hjælp."
+ "Opdater"
+ "Log ind med Google"
+
+ "Installer/opdater/aktivér Google Play-tjenester"
+ "Fejl i Google Play-tjenester"
+ "Anmodning fra %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-de/strings.xml b/lib/google-play-services_lib/res/values-de/strings.xml
new file mode 100644
index 0000000..0ce4498
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-de/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Google Play-Dienste installieren"
+ "Zur Nutzung dieser App sind Google Play-Dienste erforderlich, die auf Ihrem Telefon nicht installiert sind."
+ "Zur Nutzung dieser App sind Google Play-Dienste erforderlich, die auf Ihrem Tablet nicht installiert sind."
+ "Google Play-Dienste installieren"
+ "Google Play-Dienste aktivieren"
+ "Diese App funktioniert nur, wenn Sie die Google Play-Dienste aktivieren."
+ "Google Play-Dienste aktivieren"
+ "Google Play-Dienste aktualisieren"
+ "Diese App wird nur ausgeführt, wenn Sie die Google Play-Dienste aktualisieren."
+ "Unbekanntes Problem mit Google Play-Diensten"
+ "Google Play-Dienste"
+ "Google Play-Dienste, auf denen einige Ihrer Apps basieren, werden von diesem Gerät nicht unterstützt. Wenden Sie sich für weitere Informationen an den Hersteller."
+ "Aktualisieren"
+ "Über Google anmelden"
+
+ "Google Play-Dienste installieren/aktualisieren/aktivieren"
+ "Fehler bei Google Play-Diensten"
+ "Angefordert von %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-el/strings.xml b/lib/google-play-services_lib/res/values-el/strings.xml
new file mode 100644
index 0000000..7aa3ba5
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-el/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Λήψη υπηρεσιών Google Play"
+ "Αυτή η εφαρμογή δεν θα εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες λείπουν από το τηλέφωνό σας."
+ "Αυτή η εφαρμογή δεν θα εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες λείπουν από το tablet σας."
+ "Λήψη υπηρεσιών Google Play"
+ "Ενεργοποίηση υπηρεσιών Google Play"
+ "Αυτή η εφαρμογή δεν θα λειτουργήσει εάν δεν έχετε ενεργοποιήσει τις υπηρεσίες Google Play."
+ "Ενεργοπ. υπηρεσιών Google Play"
+ "Ενημέρωση υπηρεσιών Google Play"
+ "Αυτή η εφαρμογή θα εκτελεστεί αφού ενημερώσετε τις υπηρεσίες Google Play."
+ "Άγνωστο πρόβλημα με τις υπηρεσίες Google Play."
+ "Υπηρεσίες Google Play"
+ "Οι υπηρεσίες Google Play, στις οποίες βασίζονται ορισμένες από τις εφαρμογές σας, δεν υποστηρίζονται στη συσκευή σας. Επικοινωνήστε με τον κατασκευαστή για υποστήριξη."
+ "Ενημέρωση"
+ "Συνδεθείτε στο Google"
+
+ "Εγκατάσταση/ενημέρωση/ενεργοποίση υπηρεσιών Google Play"
+ "Σφάλμα υπηρεσιών Google Play"
+ "Υποβλήθηκε αίτημα από την εφαρμογή %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-en-rGB/strings.xml b/lib/google-play-services_lib/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..d34391b
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-en-rGB/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Get Google Play services"
+ "This app won\'t run without Google Play services, which are missing from your phone."
+ "This app won\'t run without Google Play services, which are missing from your tablet."
+ "Get Google Play services"
+ "Enable Google Play services"
+ "This app won\'t work unless you enable Google Play services."
+ "Enable Google Play services"
+ "Update Google Play services"
+ "This app won\'t run unless you update Google Play services."
+ "Unknown issue with Google Play services."
+ "Google Play services"
+ "Google Play services, which some of your applications rely on, is not supported by your device. Please contact the manufacturer for assistance."
+ "Update"
+ "Sign in with Google"
+
+ "Install/Update/Enable Google Play services"
+ "Google Play services error"
+ "Requested by %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-es-rUS/strings.xml b/lib/google-play-services_lib/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..f84a25e
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-es-rUS/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Obtener Google Play Services"
+ "Esta aplicación no se ejecutará si no instalasGoogle Play Services en tu dispositivo."
+ "Esta aplicación no se ejecutará si no instalas Google Play Services en tu tableta."
+ "Descargar Google Play Services"
+ "Activar Google Play Services"
+ "Esta aplicación no funcionará si no activas Google Play Services."
+ "Activar Google Play Services"
+ "Actualizar Google Play Services"
+ "Esta aplicación no se ejecutará si no actualizas Google Play Services."
+ "Error desconocido relacionado con Google Play Services"
+ "Google Play Services"
+ "Google Play Services, del cual dependen algunas de tus aplicaciones, no es compatible con tu dispositivo. Comunícate con el fabricante para obtener ayuda."
+ "Actualizar"
+ "Acceder con Google"
+
+ "Instalar/Actualizar/Habilitar Google Play Services"
+ "Error de Google Play Services"
+ "Solicitada por %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-es/strings.xml b/lib/google-play-services_lib/res/values-es/strings.xml
new file mode 100644
index 0000000..edb601e
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-es/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Descargar Google Play Services"
+ "Esta aplicación no se ejecutará si tu teléfono no tiene instalado Google Play Services."
+ "Esta aplicación no se ejecutará si tu tablet no tiene instalado Google Play Services."
+ "Descargar Google Play Services"
+ "Habilitar Google Play Services"
+ "Esta aplicación no funcionará si no habilitas Google Play Services."
+ "Habilitar Google Play Services"
+ "Actualizar Google Play Services"
+ "Esta aplicación no se ejecutará si no actualizas Google Play Services."
+ "Error desconocido relacionado con Google Play Services"
+ "Play Services"
+ "Tu dispositivo no es compatible con Play Services, del cual dependen tus aplicaciones. Para obtener asistencia, ponte en contacto el fabricante."
+ "Actualizar"
+ "Iniciar sesión con Google"
+
+ "Instalar/Actualizar/Habilitar Google Play Services"
+ "Error de Google Play Services"
+ "Solicitada por %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-et/strings.xml b/lib/google-play-services_lib/res/values-et/strings.xml
new file mode 100644
index 0000000..d293d94
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-et/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Hankige Google Play teenused"
+ "Selle rakenduse käitamiseks on vaja Google Play teenuseid, mida teie telefonis pole."
+ "Selle rakenduse käitamiseks on vaja Google Play teenuseid, mida teie tahvelarvutis pole."
+ "Hankige Google Play teenused"
+ "Lubage Google Play teenused"
+ "See rakendus ei tööta, kui te ei luba Google Play teenuseid."
+ "Lubage Google Play teenused"
+ "Värskendage Google Play teenuseid"
+ "Seda rakendust ei saa käitada, kui te ei värskenda Google Play teenuseid."
+ "Google Play teenuste tundmatu probleem."
+ "Google Play teenused"
+ "Teie seade ei toeta Google Play teenuseid, millele mõni teie rakendustest toetub. Abi saamiseks võtke ühendust tootjaga."
+ "Värskenda"
+ "Logi sisse Google\'iga"
+
+ "Google Play teenuste installimine/värskendamine/lubamine"
+ "Viga Google Play teenustes"
+ "Päringu esitas: %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-fa/strings.xml b/lib/google-play-services_lib/res/values-fa/strings.xml
new file mode 100644
index 0000000..80548d7
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-fa/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "دریافت خدمات Google Play"
+ "این برنامه بدون خدمات Google Play اجرا نمیشود، این خدمات در تلفن شما وجود ندارد."
+ "این برنامه بدون خدمات Google Play اجرا نمیشود، این خدمات در رایانهٔ لوحی شما وجود ندارد."
+ "دریافت خدمات Google Play"
+ "فعال کردن خدمات Google Play"
+ "تا زمانیکه خدمات Google Play را فعال نکنید این برنامه کار نمیکند."
+ "فعال کردن خدمات Google Play"
+ "بهروزرسانی خدمات Google Play"
+ "تا زمانیکه خدمات Google Play را بهروز نکنید این برنامه کار نمیکند."
+ "مشکل نامشخص در خدمات Google Play."
+ "خدمات Google Play"
+ "خدمات Google Play، که برخی از برنامههای شما به آن وابسته است، توسط دستگاه شما پشتیبانی نمیشود. لطفاً برای دریافت کمک با سازنده تماس بگیرید."
+ "بهروزرسانی"
+ "ورود به سیستم با Google"
+
+ "نصب /بهروزرسانی/ فعال کردن خدمات Google Play"
+ "خطا در خدمات Google Play"
+ "درخواست توسط %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-fi/strings.xml b/lib/google-play-services_lib/res/values-fi/strings.xml
new file mode 100644
index 0000000..5d566f5
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-fi/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Asenna Google Play -palvelut"
+ "Tämä sovellus ei toimi ilman Google Play -palveluita, jotka puuttuvat puhelimesta."
+ "Tämä sovellus ei toimi ilman Google Play -palveluita, jotka puuttuvat tablet-laitteesta."
+ "Asenna Google Play -palvelut"
+ "Ota Google Play -palvelut käyttöön"
+ "Tämä sovellus ei toimi, ellet ota Google Play -palveluita käyttöön."
+ "Ota Google Play -palv. käyttöön"
+ "Päivitä Google Play -palvelut"
+ "Tämä sovellus ei toimi, ellet päivitä Google Play -palveluita."
+ "Tuntematon ongelma käytettäessä Google Play -palveluita."
+ "Google Play -palvelut"
+ "Google Play -palveluita, joita osa sovelluksistasi käyttää, ei tueta laitteellasi. Pyydä ohjeita laitteen valmistajalta."
+ "Päivitä"
+ "Kirjaudu Google-tiliin"
+
+ "Asenna / Päivitä / Ota käyttöön Google Play -palvelut"
+ "Virhe Google Play -palveluissa"
+ "Pyynnön teki %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-fr/strings.xml b/lib/google-play-services_lib/res/values-fr/strings.xml
new file mode 100644
index 0000000..055b3bb
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-fr/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Installer les services Google Play"
+ "Cette application ne fonctionnera pas sans les services Google Play, qui ne sont pas installés sur votre téléphone."
+ "Cette application ne fonctionnera pas sans les services Google Play, qui ne sont pas installés sur votre tablette."
+ "Installer services Google Play"
+ "Activer les services Google Play"
+ "Cette application ne fonctionnera pas tant que vous n\'aurez pas activé les services Google Play."
+ "Activer services Google Play"
+ "Mettre à jour les services Google Play"
+ "Cette application ne fonctionnera pas tant que vous n\'aurez pas mis à jour les services Google Play."
+ "Problème inconnu avec les services Google Play."
+ "Services Google Play"
+ "Les services Google Play, dont dépendent certaines de vos applications, ne sont pas compatibles avec votre appareil. Veuillez contacter le fabricant pour obtenir de l\'aide."
+ "Mettre à jour"
+ "Se connecter avec Google"
+
+ "Installer/Mettre à jour/Activer les services Google Play"
+ "Erreur liée aux services Google Play"
+ "Demandée par %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-hi/strings.xml b/lib/google-play-services_lib/res/values-hi/strings.xml
new file mode 100644
index 0000000..e6c791e
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-hi/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Google Play सेवाएं पाएं"
+ "यह एप्लिकेशन Google Play सेवाओं के बिना नहीं चलेगा, जो आपके फ़ोन में नहीं हैं."
+ "यह एप्लिकेशन Google Play सेवाओं के बिना नहीं चलेगा, जो आपके टेबलेट में नहीं हैं."
+ "Google Play सेवाएं पाएं"
+ "Google Play सेवाएं सक्षम करें"
+ "जब तक आप Google Play सेवाएं सक्षम नहीं करते, तब तक यह एप्लिकेशन कार्य नहीं करेगा."
+ "Google Play सेवाएं सक्षम करें"
+ "Google Play सेवाएं अपडेट करें"
+ "जब तक आप Google Play सेवाओं को अपडेट नहीं करते, तब तक यह एप्लिकेशन नहीं चलेगा."
+ "Google Play सेवाओं के साथ अज्ञात समस्या."
+ "Google Play सेवाएं"
+ "Google Play सेवाएं, जिन पर आपके कुछ एप्लिकेशन निर्भर करते हैं, आपके उपकरण द्वारा समर्थित नहीं हैं. कृपया सहायता के लिए निर्माता से संपर्क करें."
+ "अपडेट करें"
+ "Google से साइन इन करें"
+
+ "Google Play सेवाएं इंस्टॉल/अपडेट/सक्षम करें"
+ "Google Play सेवाएं त्रुटि"
+ "%1$s द्वारा अनुरोधित"
+
diff --git a/lib/google-play-services_lib/res/values-hr/strings.xml b/lib/google-play-services_lib/res/values-hr/strings.xml
new file mode 100644
index 0000000..e2619b9
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-hr/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Preuzmi usluge za Google Play"
+ "Ova aplikacija neće funkcionirati bez usluga za Google Play, koje nisu instalirane na vašem telefonu."
+ "Ova aplikacija neće funkcionirati bez usluga za Google Play, koje nisu instalirane na vašem tabletnom računalu."
+ "Preuzmi usluge za Google Play"
+ "Omogući usluge za Google Play"
+ "Ova aplikacija neće raditi ako ne omogućite usluge za Google Play."
+ "Omogući usluge za Google Play"
+ "Ažuriraj usluge za Google Play"
+ "Ova se aplikacija neće pokrenuti ako ne ažurirate usluge za Google Play."
+ "Nepoznata poteškoća s uslugama za Google Play."
+ "Usluge za Google Play"
+ "Usluge za Google Play, koje su potrebne za funkcioniranje nekih vaših aplikacija, nisu podržane na vašem uređaju. Pomoć potražite od proizvođača."
+ "Ažuriranje"
+ "Prijava uslugom Google"
+
+ "Instaliranje/ažuriranje/omogućivanje usluga za Google Play"
+ "Pogreška usluga za Google Play"
+ "Zahtijeva aplikacija %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-hu/strings.xml b/lib/google-play-services_lib/res/values-hu/strings.xml
new file mode 100644
index 0000000..c010ca4
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-hu/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Play Szolgáltatások telepítése"
+ "Az alkalmazás működéséhez a Google Play Szolgáltatások szükségesek, ezek nincsenek telepítve a telefonon."
+ "Az alkalmazás működéséhez a Google Play Szolgáltatások szükségesek, ezek nincsenek telepítve a táblagépen."
+ "Play Szolgáltatások telepítése"
+ "Google Play Szolgáltatások aktiválása"
+ "Az alkalmazás csak akkor fog működni, ha engedélyezi a Google Play Szolgáltatásokat."
+ "Play Szolgáltatások aktiválása"
+ "Play Szolgáltatások frissítése"
+ "Az alkalmazás csak akkor fog működni, ha frissíti a Google Play Szolgáltatásokat."
+ "Ismeretlen hiba a Google Play Szolgáltatásokban."
+ "Google Play Szolgáltatások"
+ "A Google Play Szolgáltatásokat, amelyre egyes alkalmazások támaszkodnak, nem támogatja az eszköz. Segítségért forduljon az eszköz gyártójához."
+ "Frissítés"
+ "Google-bejelentkezés"
+
+ "Google Play Szolgáltatások telepítése/frissítése/engedélyezése"
+ "Google Play szolgáltatási hiba"
+ "Igénylő: %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-in/strings.xml b/lib/google-play-services_lib/res/values-in/strings.xml
new file mode 100644
index 0000000..18be7be
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-in/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Dapatkan layanan Google Play"
+ "Aplikasi ini tidak akan berjalan tanpa layanan Google Play, yang tidak ada di ponsel Anda."
+ "Aplikasi ini tidak akan berjalan tanpa layanan Google Play, yang tidak ada di tablet Anda."
+ "Dapatkan layanan Google Play"
+ "Aktifkan layanan Google Play"
+ "Aplikasi ini tidak akan bekerja sampai Anda mengaktifkan layanan Google Play."
+ "Aktifkan layanan Google Play"
+ "Perbarui layanan Google Play"
+ "Aplikasi ini tidak akan berjalan sampai Anda memperbarui layanan Google Play."
+ "Masalah tidak diketahui pada layanan Google Play."
+ "Layanan Google Play"
+ "Layanan Google Play, yang diandalkan oleh beberapa aplikasi Anda, tidak didukung oleh perangkat Anda. Hubungi pabrikan untuk mendapatkan bantuan."
+ "Perbarui"
+ "Masuk dengan Google"
+
+ "Pasang/Perbarui/Aktifkan layanan Google Play"
+ "Kesalahan layanan Google Play"
+ "Diminta oleh %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-it/strings.xml b/lib/google-play-services_lib/res/values-it/strings.xml
new file mode 100644
index 0000000..c417ed3
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-it/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Installa Google Play Services"
+ "L\'app non funzionerà senza Google Play Services, non presente sul tuo telefono."
+ "L\'app non funzionerà senza Google Play Services, non presente sul tuo tablet."
+ "Installa Google Play Services"
+ "Attiva Google Play Services"
+ "L\'app non funzionerà se non attivi Google Play Services."
+ "Attiva Google Play Services"
+ "Aggiorna Google Play Services"
+ "L\'app non funzionerà se non aggiorni Google Play Services."
+ "Problema sconosciuto con Google Play Services."
+ "Google Play Services"
+ "La piattaforma Google Play Services, su cui sono basate alcune delle tue applicazioni, non è supportata dal dispositivo in uso. Per assistenza, contatta il produttore."
+ "Aggiorna"
+ "Accedi con Google"
+
+ "Installa/aggiorna/attiva Google Play Services"
+ "Errore Google Play Services"
+ "Richiesta da %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-iw/strings.xml b/lib/google-play-services_lib/res/values-iw/strings.xml
new file mode 100644
index 0000000..c4fa009
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-iw/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "קבל את שירותי Google Play"
+ "יישום זה לא יפעל ללא שירותי Google Play, החסרים בטלפון שלך."
+ "יישום זה לא יפעל ללא שירותי Google Play, החסרים בטאבלט שלך."
+ "קבל את שירותי Google Play"
+ "הפעלת שירותי Google Play"
+ "יישום זה לא יעבוד אם לא תפעיל את שירותי Google Play."
+ "הפעל את שירותי Google Play"
+ "עדכון שירותי Google Play"
+ "יישום זה לא יפעל אם לא תעדכן את שירותי Google Play."
+ "בעיה לא ידועה בשירותי Google Play."
+ "שירותי Google Play"
+ "שירותי Google Play, שחלק מהיישומים שלך מתבססים עליהם, אינם נתמכים על ידי המכשיר שברשותך. צור קשר עם היצרן לקבלת סיוע."
+ "עדכן"
+ "היכנס באמצעות Google"
+
+ "התקנה/עדכון/הפעלה של שירותי Google Play"
+ "שגיאה בשירותי Google Play"
+ "התבקשה על ידי %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-ja/strings.xml b/lib/google-play-services_lib/res/values-ja/strings.xml
new file mode 100644
index 0000000..d01c308
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-ja/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Play開発者サービスの入手"
+ "このアプリの実行にはGoogle Play開発者サービスが必要ですが、お使いの携帯端末にはインストールされていません。"
+ "このアプリの実行にはGoogle Play開発者サービスが必要ですが、お使いのタブレットにはインストールされていません。"
+ "Play開発者サービスの入手"
+ "Play開発者サービスの有効化"
+ "このアプリの実行には、Google Play開発者サービスの有効化が必要です。"
+ "Play開発者サービスの有効化"
+ "Play開発者サービスの更新"
+ "このアプリの実行には、Google Play開発者サービスの更新が必要です。"
+ "Google Play開発者サービスで原因不明の問題が発生しました。"
+ "Google Play開発者サービス"
+ "一部のアプリが使用しているGoogle Play開発者サービスは、お使いの端末ではサポートされていません。詳しくは、端末メーカーまでお問い合わせください。"
+ "更新"
+ "Googleでログイン"
+
+ "Google Play開発者サービスのインストール/更新/有効化"
+ "Google Play開発者サービスのエラー"
+ "%1$sによるリクエスト"
+
diff --git a/lib/google-play-services_lib/res/values-ko/strings.xml b/lib/google-play-services_lib/res/values-ko/strings.xml
new file mode 100644
index 0000000..886ccab
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-ko/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Google Play 서비스 설치"
+ "휴대전화에 Google Play 서비스가 설치되어 있어야 이 앱이 실행됩니다."
+ "태블릿에 Google Play 서비스가 설치되어 있어야 이 앱이 실행됩니다."
+ "Google Play 서비스 설치"
+ "Google Play 서비스 사용"
+ "Google Play 서비스를 사용하도록 설정해야 이 앱이 작동합니다."
+ "Google Play 서비스 사용"
+ "Google Play 서비스 업데이트"
+ "Google Play 서비스를 업데이트해야만 이 앱이 실행됩니다."
+ "Google Play 서비스에 알 수 없는 문제가 발생했습니다."
+ "Google Play 서비스"
+ "일부 사용자 애플리케이션에 필요한 Google Play 서비스가 사용자 기기에서 지원되지 않습니다. 기기 제조업체에 문의하시기 바랍니다."
+ "업데이트"
+ "Google 계정으로 로그인"
+
+ "Google Play 서비스 설치/업데이트/사용 설정"
+ "Google Play 서비스 오류"
+ "%1$s에서 요청"
+
diff --git a/lib/google-play-services_lib/res/values-lt/strings.xml b/lib/google-play-services_lib/res/values-lt/strings.xml
new file mode 100644
index 0000000..9f1c929
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-lt/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Gauti „Google Play“ paslaugų"
+ "Ši programa neveiks be „Google Play“ paslaugų, kurios neįdiegtos telefone."
+ "Ši programa neveiks be „Google Play“ paslaugų, kurios neįdiegtos planšetiniame kompiuteryje."
+ "Gauti „Google Play“ paslaugų"
+ "Įgalinti „Google Play“ paslaugas"
+ "Ši programa neveiks, jei neįgalinsite „Google Play“ paslaugų."
+ "Įgal. „Google Play“ paslaugas"
+ "Atnaujinti „Google Play“ paslaugas"
+ "Ši programa neveiks, jei neatnaujinsite „Google Play“ paslaugų."
+ "Nežinoma „Google Play“ paslaugų problema."
+ "„Google Play“ paslaugos"
+ "Jūsų įrenginys nepalaiko „Google Play“ paslaugų, kuriomis remiasi kai kurios programos. Jei reikia pagalbos, susisiekite su gamintoju."
+ "Atnaujinti"
+ "Prisij. naud. „Google“"
+
+ "Įdiekite / atnaujinkite / įgalinkite „Google Play“ paslaugas"
+ "„Google Play“ paslaugų klaida"
+ "Užklausą pateikė „%1$s“"
+
diff --git a/lib/google-play-services_lib/res/values-lv/strings.xml b/lib/google-play-services_lib/res/values-lv/strings.xml
new file mode 100644
index 0000000..30f0a77
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-lv/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Google Play pakalpojumu iegūšana"
+ "Lai šī lietotne darbotos, tālrunī ir jāinstalē Google Play pakalpojumi."
+ "Lai šī lietotne darbotos, planšetdatorā ir jāinstalē Google Play pakalpojumi."
+ "Iegūt Google Play pakalpojumus"
+ "Google Play pakalpojumu iespējošana"
+ "Lai šī lietotne darbotos, iespējojiet Google Play pakalpojumus."
+ "Iespējot Google Play pakalpojumus"
+ "Google Play pakalpojumu atjaunināšana"
+ "Lai šī lietotne darbotos, atjauniniet Google Play pakalpojumus."
+ "Nezināma problēma ar Google Play pakalpojumiem."
+ "Google Play pakalpojumi"
+ "Jūsu ierīce neatbalsta Google Play pakalpojumus, kuri nepieciešami dažu jūsu lietojumprogrammu darbībai. Lūdzu, sazinieties ar ražotāju, lai saņemtu palīdzību."
+ "Atjaunināt"
+ "Pierakstīties Google"
+
+ "Instalējiet/atjauniniet/iespējojiet Google Play pakalpojumus"
+ "Google Play pakalpojumu kļūda"
+ "Pieprasījums no lietotnes %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-ms/strings.xml b/lib/google-play-services_lib/res/values-ms/strings.xml
new file mode 100644
index 0000000..b6a1c0c
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-ms/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Dapatkan perkhidmatan Google Play"
+ "Apl ini tidak akan berfungsi tanpa perkhidmatan Google Play dan apl ini tiada pada telefon anda."
+ "Apl ini tidak akan berfungsi tanpa perkhidmatan Google Play dan apl ini tiada pada tablet anda."
+ "Dapatkan perkhidmatan Google Play"
+ "Dayakan perkhidmatan Google Play"
+ "Apl ini tidak akan berfungsi kecuali anda mendayakan perkhidmatan Google Play."
+ "Dayakan perkhidmatan Google Play"
+ "Kemas kini perkhidmatan Google Play"
+ "Apl ini tidak akan berfungsi kecuali anda mengemas kini perkhidmatan Google Play."
+ "Isu tidak diketahui dengan perkhidmatan Google Play."
+ "Perkhidmatan Google Play"
+ "Peranti anda tidak menyokong perkhidmatan Google Play, sedangkan sesetengah aplikasi anda memerlukannya. Sila hubungi pengilang untuk bantuan."
+ "Kemas kini"
+ "Log masuk dengan Google"
+
+ "Pasang/Kemas Kini/Dayakan perkhidmatan Google Play"
+ "Ralat perkhidmatan Google Play"
+ "Diminta oleh %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-nb/strings.xml b/lib/google-play-services_lib/res/values-nb/strings.xml
new file mode 100644
index 0000000..ba9a1f8
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-nb/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Installer Google Play Tjenester"
+ "Denne appen kan ikke kjøres uten Google Play Tjenester, som ikke er installert på telefonen din."
+ "Denne appen kan ikke kjøres uten Google Play Tjenester, som ikke er installert på nettbrettet ditt."
+ "Installer Google Play Tjenester"
+ "Aktiver Google Play Tjenester"
+ "Denne appen fungerer ikke med mindre du aktiverer Google Play Tjenester."
+ "Aktiver Google Play Tjenester"
+ "Oppdater Google Play Tjenester"
+ "Denne appen kan ikke kjøres før du oppdaterer Google Play Tjenester."
+ "Det oppsto et ukjent problem med Google Play Tjenester."
+ "Google Play Tjenester"
+ "Google Play Tjenester, som noen av appene er avhengige av, støttes ikke av enheten. Ta kontakt med produsenten for å få hjelp."
+ "Oppdater"
+ "Logg inn med Google"
+
+ "Du må installere, oppdatere eller aktivere Google Play Tjenester"
+ "Google Play Tjenester-feil"
+ "Forespurt av %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-nl/strings.xml b/lib/google-play-services_lib/res/values-nl/strings.xml
new file mode 100644
index 0000000..bdb8636
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-nl/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Google Play-services ophalen"
+ "Deze app kan niet worden uitgevoerd zonder Google Play-services die ontbreken op uw telefoon."
+ "Deze app kan niet worden uitgevoerd zonder Google Play-services die ontbreken op uw tablet."
+ "Google Play-services ophalen"
+ "Google Play-services inschakelen"
+ "Deze app werkt niet, tenzij u Google Play-services inschakelt."
+ "Google Play-services inschak."
+ "Google Play-services bijwerken"
+ "Deze app kan niet worden uitgevoerd, tenzij u Google Play-services bijwerkt."
+ "Onbekend probleem met Google Play-services."
+ "Google Play-services"
+ "Google Play-services, dat vereist is voor een aantal van uw applicaties, wordt niet ondersteund door uw apparaat. Neem contact op met de fabrikant voor ondersteuning."
+ "Bijwerken"
+ "Aanmelden met Google"
+
+ "Google Play-services installeren/bijwerken/inschakelen"
+ "Fout met Google Play-services"
+ "Aangevraagd door %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-pl/strings.xml b/lib/google-play-services_lib/res/values-pl/strings.xml
new file mode 100644
index 0000000..8e572a4
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-pl/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Pobierz Usługi Google Play"
+ "Ta aplikacja nie będzie działać bez Usług Google Play, których nie masz na telefonie."
+ "Ta aplikacja nie będzie działać bez Usług Google Play, których nie masz na tablecie."
+ "Pobierz Usługi Google Play"
+ "Włącz Usługi Google Play"
+ "Ta aplikacja nie będzie działać, jeśli nie włączysz Usług Google Play."
+ "Włącz Usługi Google Play"
+ "Aktualizuj Usługi Google Play"
+ "Ta aplikacja nie będzie działać, jeśli nie zaktualizujesz Usług Google Play."
+ "Nieznany problem z Usługami Google Play."
+ "Usługi Google Play"
+ "Usługi Google Play, od których zależy działanie niektórych aplikacji, nie są obsługiwane na Twoim urządzeniu. Skontaktuj się z producentem, by uzyskać pomoc."
+ "Aktualizuj"
+ "Zaloguj się przez Google"
+
+ "Zainstaluj, zaktualizuj lub włącz usługi Google Play"
+ "Błąd usług Google Play"
+ "Żądanie z aplikacji %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-pt-rPT/strings.xml b/lib/google-play-services_lib/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..30e5df5
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-pt-rPT/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Obter serviços do Google Play"
+ "Esta aplicação não será executada sem os serviços do Google Play, que estão em falta no seu telemóvel."
+ "Esta aplicação não será executada sem os serviços do Google Play, que estão em falta no seu tablet."
+ "Obter serviços do Google Play"
+ "Ativar serviços do Google Play"
+ "Esta aplicação não funcionará enquanto não ativar os serviços do Google Play."
+ "Ativar serviços do Google Play"
+ "Atualizar serviços do Google Play"
+ "Esta aplicação não será executada enquanto não atualizar os serviços do Google Play."
+ "Problema desconhecido nos serviços do Google Play."
+ "Serviços do Google Play"
+ "Os serviços do Google Play, dos quais dependem algumas das suas aplicações, não são suportados pelo seu dispositivo. Contacte o fabricante para obter assistência."
+ "Atualizar"
+ "Inic. sessão com o Google"
+
+ "Instalar/Atualizar/Ativar serviços do Google Play"
+ "Erro dos serviços do Google Play"
+ "Solicitado por %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-pt/strings.xml b/lib/google-play-services_lib/res/values-pt/strings.xml
new file mode 100644
index 0000000..804cc17
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-pt/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Instale o Google Play Services"
+ "Este aplicativo não funciona sem o Google Play Services, que não está instalado em seu telefone."
+ "Este aplicativo não funciona sem o Google Play Services, que não está instalado em seu tablet."
+ "Instalar o Google Play Services"
+ "Ative o Gogle Play Services"
+ "Este aplicativo só funciona com o Google Play Services ativado."
+ "Ativar o Gogle Play Services"
+ "Atualize o Google Play Services"
+ "Este aplicativo só funciona com uma versão atualizada do Google Play Services."
+ "Problema desconhecido com o Google Play Services."
+ "Play Services"
+ "O Google Play Services, necessário para alguns dos aplicativos, não é compatível com seu dispositivo. Entre em contato com o fabricante para obter assistência."
+ "Atualizar"
+ "Fazer login com o Google"
+
+ "Instalar/atualizar/ativar o Google Play Services"
+ "Ocorreu um erro no Google Play Services"
+ "Solicitado por %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-ro/strings.xml b/lib/google-play-services_lib/res/values-ro/strings.xml
new file mode 100644
index 0000000..236f3a2
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-ro/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Descărcaţi Servicii Google Play"
+ "Această aplicaţie nu poate rula fără Servicii Google Play, care lipsesc de pe telefon."
+ "Această aplicaţie nu poate rula fără Servicii Google Play, care lipsesc de pe tabletă."
+ "Obţineţi Servicii Google Play"
+ "Activaţi Servicii Google Play"
+ "Această aplicaţie nu va funcţiona decât dacă activaţi Servicii Google Play."
+ "Activaţi Servicii Google Play"
+ "Actualizaţi Servicii Google Play"
+ "Această aplicaţie nu poate rula decât dacă actualizaţi Servicii Google Play."
+ "Problemă necunoscută privind Servicii Google Play."
+ "Servicii Google Play"
+ "Gadgetul nu acceptă serviciile Google Play, pe care se bazează unele dintre aplicații. Pentru asistență, contactați producătorul gadgetului."
+ "Actualizaţi"
+ "Conectați-vă cu Google"
+
+ "Instalați/Actualizați/Activați Servicii Google Play"
+ "Eroare Servicii Google Play"
+ "Solicitată de %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-ru/strings.xml b/lib/google-play-services_lib/res/values-ru/strings.xml
new file mode 100644
index 0000000..4c3463b
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-ru/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Установите Сервисы Google Play"
+ "Для работы этого приложения требуется установить Сервисы Google Play."
+ "Для работы этого приложения требуется установить Сервисы Google Play."
+ "Установить"
+ "Включите Сервисы Google Play"
+ "Для работы этого приложения требуется включить Сервисы Google Play."
+ "Включить"
+ "Обновите Сервисы Google Play"
+ "Для работы этого приложения требуется обновить Сервисы Google Play."
+ "Неизвестная ошибка с Сервисами Google Play."
+ "Сервисы Google Play"
+ "Сервисы Google Play, необходимые для работы некоторых приложений, не поддерживаются на вашем устройстве. Обратитесь к производителю."
+ "Обновить"
+ "Войти в аккаунт Google"
+
+ "Установка/обновление/включение сервисов Google Play"
+ "Ошибка сервисов Google Play"
+ "Запрос от приложения \"%1$s\""
+
diff --git a/lib/google-play-services_lib/res/values-sk/strings.xml b/lib/google-play-services_lib/res/values-sk/strings.xml
new file mode 100644
index 0000000..ade9816
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-sk/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Inštalovať služby Google Play"
+ "Na spustenie tejto aplikácie sa vyžadujú služby Google Play, ktoré v telefóne nemáte."
+ "Na spustenie tejto aplikácie sa vyžadujú služby Google Play, ktoré v tablete nemáte."
+ "Inštalovať služby Google Play"
+ "Povoliť služby Google Play"
+ "Táto aplikácia bude fungovať až po povolení služieb Google Play."
+ "Povoliť služby Google Play"
+ "Aktualizovať služby Google Play"
+ "Túto aplikáciu bude možné spustiť až po aktualizácii služieb Google Play."
+ "Neznámy problém so službami Google Play."
+ "Služby Google Play"
+ "Niektoré vaše aplikácie vyžadujú služby Google Play, ktoré vo vašom zariadení nie sú podporované. Ak potrebujete pomoc, kontaktujte výrobcu."
+ "Aktualizovať"
+ "Prihlásiť sa do účtu Google"
+
+ "Inštalovať/aktualizovať/povoliť služby Google Play"
+ "Chyba služieb Google Play"
+ "Vyžiadané aplikáciou %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-sl/strings.xml b/lib/google-play-services_lib/res/values-sl/strings.xml
new file mode 100644
index 0000000..9616775
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-sl/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Namestite storitve Google Play"
+ "Ta aplikacija ne deluje brez storitev Google Play, ki jih ni v telefonu."
+ "Ta aplikacija ne deluje brez storitev Google Play, ki jih ni v tabličnem računalniku."
+ "Namestite storitve Google Play"
+ "Omogočite storitve Google Play"
+ "Aplikacija ne bo delovala, če ne omogočite storitev Google Play."
+ "Omogočite storitve Google Play"
+ "Posodobite storitve Google Play"
+ "Ta aplikacija ne deluje, če ne posodobite storitev Google Play."
+ "Neznana težava s storitvami Google Play."
+ "Storitve Google Play"
+ "Vaša naprava na podpira storitev Google Play, ki jih potrebujejo nekatere od vaših aplikacij. Za pomoč se obrnite na izdelovalca."
+ "Posodobi"
+ "Prijavite se v Google"
+
+ "Namestitev/posodobitev/omogočanje storitev Google Play"
+ "Napaka storitev Google Play"
+ "Zahtevala aplikacija %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-sr/strings.xml b/lib/google-play-services_lib/res/values-sr/strings.xml
new file mode 100644
index 0000000..6b68b20
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-sr/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Преузимање Google Play услуга"
+ "Ова апликација не може да се покрене без Google Play услуга, које недостају на телефону."
+ "Ова апликација не може да се покрене без Google Play услуга, које недостају на таблету."
+ "Преузми Google Play услуге"
+ "Омогућавање Google Play услуга"
+ "Ова апликација неће функционисати ако не омогућите Google Play услуге."
+ "Омогући Google Play услуге"
+ "Ажурирање Google Play услуга"
+ "Ова апликација не може да се покрене ако не ажурирате Google Play услуге."
+ "Непознат проблем са Google Play услугама."
+ "Google Play услуге"
+ "Google Play услуге, које су потребне за функционисање неких од апликација, нису подржане на уређају. Контактирајте произвођача да бисте добили помоћ."
+ "Ажурирај"
+ "Пријави ме преко Google-а"
+
+ "Инсталирајте/ажурирајте/омогућите Google Play услуге"
+ "Грешка Google Play услуга"
+ "Захтева %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-sv/strings.xml b/lib/google-play-services_lib/res/values-sv/strings.xml
new file mode 100644
index 0000000..813b396
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-sv/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Hämta Google Play Tjänster"
+ "Den här appen kan inte köras utan Google Play Tjänster, som saknas på mobilen."
+ "Den här appen kan inte köras utan Google Play Tjänster, som saknas på surfplattan."
+ "Hämta Google Play Tjänster"
+ "Aktivera Google Play Tjänster"
+ "Du måste aktivera Google Play Tjänster för att den här appen ska fungera."
+ "Aktivera Google Play Tjänster"
+ "Uppdatera Google Play Tjänster"
+ "Du måste uppdatera Google Play Tjänster innan du kan köra den här appen."
+ "Okänt problem med Google Play Tjänster"
+ "Google Play-tjänster"
+ "Några av dina appar använder Google Play-tjänster som inte stöds av din enhet. Kontakta tillverkaren om du vill ha hjälp."
+ "Uppdatera"
+ "Logga in med Google"
+
+ "Installera/uppdatera/aktivera Google Play Tjänster"
+ "Fel på Google Play Tjänster"
+ "Begärdes av %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-sw/strings.xml b/lib/google-play-services_lib/res/values-sw/strings.xml
new file mode 100644
index 0000000..af7b4d7
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-sw/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Pata huduma za Google Play"
+ "Programu hii haiwezi kuendeshwa bila huduma za Google Play, ambazo hazipo kwenye simu yako."
+ "Programu hii haiwezi kuendeshwa bila huduma za Google Play, ambazo hazipo kwenye kompyuta yako ndogo."
+ "Pata huduma za Google Play"
+ "Wezesha huduma za Google Play"
+ "Programu hii haitafanya kazi mpaka utakapowezesha huduma za Google Play."
+ "Wezesha huduma za Google Play"
+ "Sasisha huduma za Google Play"
+ "Programu hii haiwezi kuendeshwa mpaka utakaposasisha huduma za Google Play."
+ "Suala lisilojulikana na huduma za Google Play."
+ "Huduma za Google Play"
+ "Huduma za Google Play, ambazo baadhi ya programu zako zinategemea, si linganifu na kifaa chako. Tafadhali wasiliana na mtengenezaji kwa usaidizi."
+ "Sasisha"
+ "Ingia ukitumia Google"
+
+ "Sakinisha/Sasisha/Wezesha Huduma za Google Play"
+ "Hitilafu kwenye Huduma za Google Play"
+ "Imeombwa na %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-th/strings.xml b/lib/google-play-services_lib/res/values-th/strings.xml
new file mode 100644
index 0000000..9d952df
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-th/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "รับบริการ Google Play"
+ "แอปพลิเคชันนี้จะไม่ทำงานหากไม่มีบริการ Google Play ซึ่งไม่มีในโทรศัพท์ของคุณ"
+ "แอปพลิเคชันนี้จะไม่ทำงานหากไม่มีบริการ Google Play ซึ่งไม่มีในแท็บเล็ตของคุณ"
+ "รับบริการ Google Play"
+ "เปิดใช้งานบริการ Google Play"
+ "แอปพลิเคชันนี้จะไม่ทำงานจนกว่าคุณจะเปิดใช้งานบริการ Google Play"
+ "เปิดใช้งานบริการ Google Play"
+ "อัปเดตบริการ Google Play"
+ "แอปพลิเคชันนี้จะไม่ทำงานจนกว่าคุณจะอัปเดตบริการ Google Play"
+ "ปัญหาที่ไม่รู้จักของบริการ Google Play"
+ "บริการ Google Play"
+ "บริการ Google Play ซึ่งใช้งานในบางแอปพลิเคชัน ไม่ได้รับการสนับสนุนโดยอุปกรณ์ของคุณ โปรดติดต่อผู้ผลิตเพื่อขอรับความช่วยเหลือ"
+ "อัปเดต"
+ "ลงชื่อเข้าใช้ด้วย Google"
+
+ "ติดตั้ง/อัปเดต/เปิดใช้งานบริการ Google Play"
+ "ข้อผิดพลาดของบริการ Google Play"
+ "ขอโดย %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-tl/strings.xml b/lib/google-play-services_lib/res/values-tl/strings.xml
new file mode 100644
index 0000000..3920c1d
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-tl/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Kumuha ng mga serbisyo ng Google Play"
+ "Hindi tatakbo ang app na ito nang wala ang mga serbisyo ng Google Play, na wala sa iyong telepono."
+ "Hindi gagana ang app na ito nang wala ang mga serbisyo ng Google Play, na wala sa iyong tablet."
+ "Kumuha ng Google Play services"
+ "Paganahin ang Google Play services"
+ "Hindi gagana ang app na ito maliban kung papaganahin mo ang mga serbisyo ng Google Play."
+ "Enable Google Play services"
+ "I-update ang mga serbisyo ng Google Play"
+ "Hindi gagana ang app na ito maliban kung i-a-update mo ang mga serbisyo ng Google Play."
+ "May hindi alam na isyu sa mga serbisyo ng Google Play."
+ "Mga serbisyo ng Google Play"
+ "Ang mga serbisyo ng Google Play, kung saan nakadepende ang ilan sa iyong mga application, ay hindi sinusuportahan ng iyong device. Mangyaring makipag-ugnay sa manufacturer para sa tulong."
+ "I-update"
+ "Mag-sign in sa Google"
+
+ "I-install/I-update/Paganahin ang mga serbisyo ng Google Play"
+ "Error sa mga serbisyo ng Google Play"
+ "Hiniling ng %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-tr/strings.xml b/lib/google-play-services_lib/res/values-tr/strings.xml
new file mode 100644
index 0000000..c886eb8
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-tr/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Google Play hizmetlerini edinin"
+ "Google Play Hizmetleri telefonunuzda yok ve bu uygulama Google Play Hizmetleri olmadan çalışmaz."
+ "Google Play Hizmetleri tabletinizde yok ve bu uygulama Google Play Hizmetleri olmadan çalışmaz."
+ "Google Play hizmetlerini edin"
+ "Google Play hizmetlerini etkinleştir"
+ "Bu uygulama, Google Play Hizmetleri etkinleştirilmeden çalışmaz"
+ "Google Play hizmetlerini etkinleştir"
+ "Google Play hizmetlerini güncelle"
+ "Bu uygulama Google Play Hizmetleri güncellenmeden çalışmaz."
+ "Google Play hizmetleriyle ilgili bilinmeyen sorun."
+ "Google Play hizmetleri"
+ "Cihazınız, uygulamalarınızdan bazıları için gerekli olan Google Play hizmetlerini desteklemiyor. Lütfen yardım için üreticiyle iletişim kurun."
+ "Güncelle"
+ "Google\'da oturum aç"
+
+ "Google Play hizmetlerini yükleyin/güncelleyin/etkinleştirin"
+ "Google Play hizmetleri hatası"
+ "İstekte bulunan: %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-uk/strings.xml b/lib/google-play-services_lib/res/values-uk/strings.xml
new file mode 100644
index 0000000..a261d0e
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-uk/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Установити Google Play Послуги"
+ "Ця програма не запуститься без Google Play Послуг, яких немає у вашому телефоні."
+ "Ця програма не запуститься без Google Play Послуг, яких немає на вашому планшетному ПК."
+ "Установити Google Play Послуги"
+ "Увімкнути Google Play Послуги"
+ "Ця програма не працюватиме, поки ви не ввімкнете Google Play Послуги."
+ "Увімкнути Google Play Послуги"
+ "Оновити Google Play Послуги"
+ "Ця програма не запуститься, поки ви не оновите Google Play Послуги."
+ "Google Play Послуги – невідома проблема."
+ "Сервіси Google Play"
+ "Ваш пристрій не підтримує Сервіси Google Play, від яких залежить робота деяких програм. Зверніться по допомогу до виробника."
+ "Оновити"
+ "Увійти в обл.запис Google"
+
+ "Установити/Оновити/Увімкнути Сервіси Google Play"
+ "Помилка Сервісів Google Play"
+ "Запит від програми %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-vi/strings.xml b/lib/google-play-services_lib/res/values-vi/strings.xml
new file mode 100644
index 0000000..93fbdb1
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-vi/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Cài đặt dịch vụ của Google Play"
+ "Ứng dụng này sẽ không chạy nếu không có dịch vụ của Google Play. Điện thoại của bạn bị thiếu dịch vụ này."
+ "Ứng dụng này sẽ không chạy nếu không có dịch vụ của Google Play. Máy tính bảng của bạn bị thiếu dịch vụ này."
+ "Cài đặt dịch vụ của Google Play"
+ "Bật dịch vụ của Google Play"
+ "Ứng dụng này sẽ không hoạt động trừ khi bạn bật dịch vụ của Google Play."
+ "Bật dịch vụ của Google Play"
+ "Cập nhật dịch vụ của Google Play"
+ "Ứng dụng này sẽ không chạy trừ khi bạn cập nhật dịch vụ của Google Play."
+ "Sự cố không xác định với dịch vụ của Google Play."
+ "Dịch vụ của Google Play"
+ "Các dịch vụ của Google Play mà một số ứng dụng của bạn dựa vào không được thiết bị của bạn hỗ trợ. Vui lòng liên hệ với nhà sản xuất để được hỗ trợ."
+ "Cập nhật"
+ "Đăng nhập bằng Google"
+
+ "Cài đặt/cập nhật/bật dịch vụ của Google Play"
+ "Lỗi dịch vụ của Google Play"
+ "Được yêu cầu bởi %1$s"
+
diff --git a/lib/google-play-services_lib/res/values-zh-rCN/strings.xml b/lib/google-play-services_lib/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..2f2aff2
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-zh-rCN/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "获取 Google Play 服务"
+ "您的手机中没有 Google Play 服务,您必须先安装该服务才能运行此应用。"
+ "您的平板电脑中没有 Google Play 服务,您必须先安装该服务才能运行此应用。"
+ "获取 Google Play 服务"
+ "启用 Google Play 服务"
+ "您必须先启用 Google Play 服务才能运行此应用。"
+ "启用 Google Play 服务"
+ "更新 Google Play 服务"
+ "您必须先更新 Google Play 服务才能运行此应用。"
+ "Google Play 服务出现未知问题。"
+ "Google Play 服务"
+ "您的设备不支持部分应用所依赖的 Google Play 服务。请与设备制造商联系,以寻求帮助。"
+ "更新"
+ "使用 Google 帐户登录"
+
+ "安装/更新/启用 Google Play 服务"
+ "Google Play 服务出错"
+ "由“%1$s”发出"
+
diff --git a/lib/google-play-services_lib/res/values-zh-rTW/strings.xml b/lib/google-play-services_lib/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..576e6f0
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-zh-rTW/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "取得 Google Play 服務"
+ "您的手機並未安裝 Google Play 服務,所以無法執行這個應用程式。"
+ "您的平板電腦並未安裝 Google Play 服務,所以無法執行這個應用程式。"
+ "取得 Google Play 服務"
+ "啟用 Google Play 服務"
+ "您必須啟用 Google Play 服務,這個應用程式才能運作。"
+ "啟用 Google Play 服務"
+ "更新 Google Play 服務"
+ "您必須更新 Google Play 服務,才能執行這個應用程式。"
+ "Google Play 服務發生不明問題。"
+ "Google Play 服務"
+ "您的裝置不支援部分應用程式所需的 Google Play 服務。如需協助,請與您的裝置製造商聯絡。"
+ "更新"
+ "使用 Google 帳戶登入"
+
+ "安裝/更新/啟用 Google Play 服務"
+ "Google Play 服務錯誤"
+ "提出要求的應用程式:%1$s"
+
diff --git a/lib/google-play-services_lib/res/values-zu/strings.xml b/lib/google-play-services_lib/res/values-zu/strings.xml
new file mode 100644
index 0000000..fd3969f
--- /dev/null
+++ b/lib/google-play-services_lib/res/values-zu/strings.xml
@@ -0,0 +1,22 @@
+
+
+ "Thola amasevisi e-Google Play"
+ "Lolu hlelo lokusebenza ngeke lusebenze ngaphandle kwamasevisi e-Google Play, angekho efonini yakho."
+ "Lolu hlelo lokusebenza ngeke lusebenze ngaphandle kwamasevisi e-Google Play, angekho kuthebulethi yakho."
+ "Thola amasevisi e-Google Play"
+ "Nika amandla amasevisi e-Google Play"
+ "Lolu hlelo lokusebenza ngeke lusebenze ngaphandle nje kokuthi unike amandla amasevisi e-Google Play."
+ "Nika amandla amasevisi e-Google Play"
+ "Buyekeza amasevisi e-Google Play"
+ "Lolu hlelo lokusebenza ngeke lusebenze ngaphandle nje kokuthi ubuyekeze amasevisi e-Google Play."
+ "Indaba engaziwa yamasevisi we-Google Play"
+ "Amasevisi we-Google Play"
+ "Amasevisi we-Google Play, okungukuthi ezinye izinhlelo zakho zithembele kuwo, awasekelwe yidivayisi yakho. Sicela uxhumane nomkhiqizi ukuze uthole usizo."
+ "Isibuyekezo"
+ "Ngena ngemvume nge-Google"
+
+ "Faka/Buyekeza/Nika amandla amasevisi we-Google"
+ "Iphutha lamasevisi we-Google Play"
+ "Kucelwe yi-%1$s"
+
diff --git a/lib/google-play-services_lib/res/values/maps_attrs.xml b/lib/google-play-services_lib/res/values/maps_attrs.xml
new file mode 100644
index 0000000..aaf65c5
--- /dev/null
+++ b/lib/google-play-services_lib/res/values/maps_attrs.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/google-play-services_lib/res/values/strings.xml b/lib/google-play-services_lib/res/values/strings.xml
new file mode 100644
index 0000000..49ba23c
--- /dev/null
+++ b/lib/google-play-services_lib/res/values/strings.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ Get Google Play services
+
+
+ This app won\'t run without Google Play services, which are missing from your phone.
+
+
+ This app won\'t run without Google Play services, which are missing from your tablet.
+
+
+ Get Google Play services
+
+
+ Enable Google Play services
+
+
+ This app won\'t work unless you enable Google Play services.
+
+
+ Enable Google Play services
+
+
+ Update Google Play services
+
+
+ This app won\'t run unless you update Google Play services.
+
+
+ Unknown issue with Google Play services.
+
+
+ Google Play services
+
+
+ Google Play services, which some of your applications rely on, is not supported by your device. Please contact the manufacturer for assistance.
+
+
+ Update
+
+
+ Sign in with Google
+
+
+
+
+ Install/Update/Enable Google Play services
+
+
+ Google Play services error
+
+
+ Requested by %1$s
+
+
diff --git a/lib/google-play-services_lib/src/android/UnusedStub.java b/lib/google-play-services_lib/src/android/UnusedStub.java
new file mode 100644
index 0000000..d546b0b
--- /dev/null
+++ b/lib/google-play-services_lib/src/android/UnusedStub.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android;
+
+// Stub java file to make inclusion into some IDE's work.
+public final class UnusedStub {
+ private UnusedStub() { }
+}
diff --git a/project.properties b/project.properties
new file mode 100644
index 0000000..0fc191b
--- /dev/null
+++ b/project.properties
@@ -0,0 +1,15 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=Google Inc.:Google APIs:8
+android.library.reference.1=../../../Library/adt-bundle-mac/sdk/extras/google/google_play_services/libproject/google-play-services_lib
diff --git a/res/drawable/bike.png b/res/drawable/bike.png
index a623cd0..1477b76 100644
Binary files a/res/drawable/bike.png and b/res/drawable/bike.png differ
diff --git a/res/drawable/custom_button.xml b/res/drawable/custom_button.xml
new file mode 100644
index 0000000..985f288
--- /dev/null
+++ b/res/drawable/custom_button.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/drawable/icon25.png b/res/drawable/icon25.png
index 0abd1da..bb6247e 100644
Binary files a/res/drawable/icon25.png and b/res/drawable/icon25.png differ
diff --git a/res/drawable/icon48.png b/res/drawable/icon48.png
index e532885..5646264 100644
Binary files a/res/drawable/icon48.png and b/res/drawable/icon48.png differ
diff --git a/res/drawable/icon72.png b/res/drawable/icon72.png
index 8453471..3f9c260 100644
Binary files a/res/drawable/icon72.png and b/res/drawable/icon72.png differ
diff --git a/res/layout/main.xml b/res/layout/main.xml
index 6b549af..0515b9c 100644
--- a/res/layout/main.xml
+++ b/res/layout/main.xml
@@ -4,9 +4,18 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
-
-
-
+
diff --git a/res/layout/mapview.xml b/res/layout/mapview.xml
index 9339d55..0e8d824 100644
--- a/res/layout/mapview.xml
+++ b/res/layout/mapview.xml
@@ -1,27 +1,52 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/recording.xml b/res/layout/recording.xml
index 1802075..f108918 100644
--- a/res/layout/recording.xml
+++ b/res/layout/recording.xml
@@ -2,7 +2,7 @@
-
-
+
diff --git a/res/layout/save.xml b/res/layout/save.xml
index dd9ab7e..d563262 100644
--- a/res/layout/save.xml
+++ b/res/layout/save.xml
@@ -4,9 +4,14 @@
android:layout_height="wrap_content">
-
+
+
+
+ android:lines="1" android:bufferType="spannable" android:textSize="14sp">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_marginBottom="10sp" android:layout_marginLeft="12sp" android:layout_marginTop="5sp" android:text="Thanks for using OpenBike! Please enter your user details here. It's optional, anonymous, and will really help us understand different people's biking preferences.">
@@ -38,7 +38,7 @@
+ android:layout_height="wrap_content" android:layout_marginTop="20sp" android:textStyle="bold" android:layout_marginRight="5sp" android:layout_marginLeft="15sp" android:text="Email address: for news and updates!">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 14e29a5..d132860 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1,8 +1,8 @@
- CycleTracks
+OpenBike
- CycleTracks
+OpenBikeSaved Trips:Start Trip!Pause
@@ -10,8 +10,8 @@
And add any comments about your trip hereSelect the main purpose of this trip
-Sending...
-Sending your trip.\n\nThanks for using CycleTracks!
+Sending…
+Sending your trip.\n\nThanks for using OpenBike!
diff --git a/sample_json_output.txt b/sample_json_output.txt
new file mode 100644
index 0000000..8d95b48
--- /dev/null
+++ b/sample_json_output.txt
@@ -0,0 +1 @@
+{"_id":"1367991617509_966","_rev":"1-4240eee0e1f741771099d0862c999b4c","coords":"{\"2013-05-07 23:40:02\":{\"vac\":9,\"lon\":-104.94871,\"rec\":\"2013-05-07 23:40:02\",\"spd\":0,\"alt\":1623.5,\"lat\":39.682957,\"hac\":9},\"2013-05-07 23:39:59\":{\"vac\":11,\"lon\":-104.948694,\"rec\":\"2013-05-07 23:39:59\",\"spd\":0,\"alt\":1624.699951171875,\"lat\":39.682935,\"hac\":11},\"2013-05-07 23:39:57\":{\"vac\":13,\"lon\":-104.948697,\"rec\":\"2013-05-07 23:39:57\",\"spd\":0,\"alt\":1620.9000244140625,\"lat\":39.682954,\"hac\":13},\"2013-05-07 23:40:00\":{\"vac\":10,\"lon\":-104.9487,\"rec\":\"2013-05-07 23:40:00\",\"spd\":0,\"alt\":1624.9000244140625,\"lat\":39.682942,\"hac\":10},\"2013-05-07 23:39:55\":{\"vac\":17,\"lon\":-104.9487,\"rec\":\"2013-05-07 23:39:55\",\"spd\":0,\"alt\":1624.699951171875,\"lat\":39.682952,\"hac\":17}}","user":"{\"gender\":\"M\",\"workZIP\":\"80202\",\"email\":\"mlockwitz@gmail.com\",\"cyclingFreq\":2,\"schoolZIP\":\"\",\"age\":\"28\",\"homeZIP\":\"80210\"}","device":"androidDeviceId-f96372616546f1b5","notes":"","purpose":"Social","start":"2013-05-07 23:39:50","end":"2013-05-07 23:40:02","ease":"5.0","safety":"0.5","convenience":"2.5","version":"2"}
\ No newline at end of file
diff --git a/src/org/sfcta/cycletracks/CyclePoint.java b/src/co/openbike/cycletracks/CyclePoint.java
similarity index 98%
rename from src/org/sfcta/cycletracks/CyclePoint.java
rename to src/co/openbike/cycletracks/CyclePoint.java
index 67c699d..f0152bf 100644
--- a/src/org/sfcta/cycletracks/CyclePoint.java
+++ b/src/co/openbike/cycletracks/CyclePoint.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import com.google.android.maps.GeoPoint;
diff --git a/src/org/sfcta/cycletracks/DbAdapter.java b/src/co/openbike/cycletracks/DbAdapter.java
similarity index 93%
rename from src/org/sfcta/cycletracks/DbAdapter.java
rename to src/co/openbike/cycletracks/DbAdapter.java
index 5a9020c..a57eb5d 100644
--- a/src/org/sfcta/cycletracks/DbAdapter.java
+++ b/src/co/openbike/cycletracks/DbAdapter.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import android.content.ContentValues;
import android.content.Context;
@@ -43,7 +43,7 @@
* SDK**
*/
public class DbAdapter {
- private static final int DATABASE_VERSION = 20;
+ public static final int DATABASE_VERSION = 2;
public static final String K_TRIP_ROWID = "_id";
public static final String K_TRIP_PURP = "purp";
@@ -51,6 +51,9 @@ public class DbAdapter {
public static final String K_TRIP_END = "endtime";
public static final String K_TRIP_FANCYSTART = "fancystart";
public static final String K_TRIP_FANCYINFO = "fancyinfo";
+ public static final String K_TRIP_SAFETY = "safety";
+ public static final String K_TRIP_CONVENIENCE = "convenience";
+ public static final String K_TRIP_EASE = "ease";
public static final String K_TRIP_NOTE = "note";
public static final String K_TRIP_DISTANCE = "distance";
public static final String K_TRIP_LATHI = "lathi";
@@ -77,7 +80,7 @@ public class DbAdapter {
*/
private static final String TABLE_CREATE_TRIPS = "create table trips "
+ "(_id integer primary key autoincrement, purp text, start double, endtime double, "
- + "fancystart text, fancyinfo text, distance float, note text,"
+ + "fancystart text, fancyinfo text, distance float, safety float, convenience float, ease float, note text,"
+ "lathi integer, latlo integer, lgthi integer, lgtlo integer, status integer);";
private static final String TABLE_CREATE_COORDS = "create table coords "
@@ -293,6 +296,7 @@ public int cleanTables() {
public Cursor fetchTrip(long rowId) throws SQLException {
Cursor mCursor = mDb.query(true, DATA_TABLE_TRIPS, new String[] {
K_TRIP_ROWID, K_TRIP_PURP, K_TRIP_START, K_TRIP_FANCYSTART,
+ K_TRIP_SAFETY, K_TRIP_CONVENIENCE, K_TRIP_EASE,
K_TRIP_NOTE, K_TRIP_LATHI, K_TRIP_LATLO, K_TRIP_LGTHI,
K_TRIP_LGTLO, K_TRIP_STATUS, K_TRIP_END, K_TRIP_FANCYINFO, K_TRIP_DISTANCE },
@@ -306,12 +310,15 @@ public Cursor fetchTrip(long rowId) throws SQLException {
}
public boolean updateTrip(long tripid, String purp, double starttime,
- String fancystart, String fancyinfo, String note, int lathigh, int latlow,
+ String fancystart, String fancyinfo, float safety, float convenience, float ease, String note, int lathigh, int latlow,
int lgthigh, int lgtlow, float distance) {
ContentValues initialValues = new ContentValues();
initialValues.put(K_TRIP_PURP, purp);
initialValues.put(K_TRIP_START, starttime);
initialValues.put(K_TRIP_FANCYSTART, fancystart);
+ initialValues.put(K_TRIP_SAFETY, safety);
+ initialValues.put(K_TRIP_CONVENIENCE, convenience);
+ initialValues.put(K_TRIP_EASE, ease);
initialValues.put(K_TRIP_NOTE, note);
initialValues.put(K_TRIP_LATHI, lathigh);
initialValues.put(K_TRIP_LATLO, latlow);
@@ -328,6 +335,8 @@ public boolean updateTripStatus(long tripid, int tripStatus) {
ContentValues initialValues = new ContentValues();
initialValues.put(K_TRIP_STATUS, tripStatus);
+ Log.d("MARK", "Updating trip status for trip " + tripid + " to " + tripStatus);
+
return mDb.update(DATA_TABLE_TRIPS, initialValues, K_TRIP_ROWID + "="
+ tripid, null) > 0;
}
diff --git a/src/org/sfcta/cycletracks/IRecordService.java b/src/co/openbike/cycletracks/IRecordService.java
similarity index 97%
rename from src/org/sfcta/cycletracks/IRecordService.java
rename to src/co/openbike/cycletracks/IRecordService.java
index ebd54fe..29badb2 100644
--- a/src/org/sfcta/cycletracks/IRecordService.java
+++ b/src/co/openbike/cycletracks/IRecordService.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
public interface IRecordService {
public int getState();
diff --git a/src/org/sfcta/cycletracks/ItemizedOverlayTrack.java b/src/co/openbike/cycletracks/ItemizedOverlayTrack.java
similarity index 98%
rename from src/org/sfcta/cycletracks/ItemizedOverlayTrack.java
rename to src/co/openbike/cycletracks/ItemizedOverlayTrack.java
index 2763f63..b712b21 100644
--- a/src/org/sfcta/cycletracks/ItemizedOverlayTrack.java
+++ b/src/co/openbike/cycletracks/ItemizedOverlayTrack.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
// This is all from the hello-mapview tutorial
diff --git a/src/org/sfcta/cycletracks/MainInput.java b/src/co/openbike/cycletracks/MainInput.java
similarity index 94%
rename from src/org/sfcta/cycletracks/MainInput.java
rename to src/co/openbike/cycletracks/MainInput.java
index a503b5d..ea42c26 100644
--- a/src/org/sfcta/cycletracks/MainInput.java
+++ b/src/co/openbike/cycletracks/MainInput.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import java.util.List;
import java.util.Map;
@@ -40,18 +40,18 @@
import android.os.IBinder;
import android.provider.Settings;
import android.view.ContextMenu;
+import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
+import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
-import android.widget.AdapterView.AdapterContextMenuInfo;
public class MainInput extends Activity {
private final static int MENU_USER_INFO = 0;
@@ -122,7 +122,7 @@ public void onClick(View v) {
private void buildAlertMessageNoGps() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage("Your phone's GPS is disabled. CycleTracks needs GPS to determine your location.\n\nGo to System Settings now to enable GPS?")
+ builder.setMessage("Your phone's GPS is disabled. OpenBike needs GPS to determine your location.\n\nGo to System Settings now to enable GPS?")
.setCancelable(false)
.setPositiveButton("GPS Settings...", new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog, final int id) {
@@ -145,8 +145,8 @@ public void onClick(final DialogInterface dialog, final int id) {
private void showWelcomeDialog() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage("Please enter your personal details so we can learn a bit about you.\n\nThen, try to use CycleTracks every time you ride. Your trip routes will be sent to the SFCTA so we can plan for better biking!\n\nThanks,\nThe SFCTA CycleTracks team")
- .setCancelable(false).setTitle("Welcome to CycleTracks!")
+ builder.setMessage("Please enter your personal details so we can learn a bit about you.\n\nThen, try to use OpenBike every time you ride. Your trip routes will Help plan for better biking!\n\nThanks,\nOpenBike")
+ .setCancelable(false).setTitle("Welcome to OpenBike!")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog, final int id) {
startActivity(new Intent(MainInput.this, UserInfoActivity.class));
@@ -263,7 +263,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
return true;
case MENU_HELP:
Intent myIntent = new Intent(Intent.ACTION_VIEW,
- Uri.parse("http://www.sfcta.org/cycletracks-androidhelp.html"));
+ Uri.parse("http://openbike.co/about"));
startActivity(myIntent);
return true;
}
diff --git a/src/org/sfcta/cycletracks/RecordingActivity.java b/src/co/openbike/cycletracks/RecordingActivity.java
similarity index 95%
rename from src/org/sfcta/cycletracks/RecordingActivity.java
rename to src/co/openbike/cycletracks/RecordingActivity.java
index f02b70f..a3d7e3c 100644
--- a/src/org/sfcta/cycletracks/RecordingActivity.java
+++ b/src/co/openbike/cycletracks/RecordingActivity.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
@@ -97,14 +97,14 @@ public void onServiceConnected(ComponentName name, IBinder service) {
rs.startRecording(trip);
isRecording = true;
RecordingActivity.this.pauseButton.setEnabled(true);
- RecordingActivity.this.setTitle("CycleTracks - Recording...");
+ RecordingActivity.this.setTitle("OpenBike - Recording...");
break;
case RecordingService.STATE_RECORDING:
long id = rs.getCurrentTrip();
trip = TripData.fetchTrip(RecordingActivity.this, id);
isRecording = true;
RecordingActivity.this.pauseButton.setEnabled(true);
- RecordingActivity.this.setTitle("CycleTracks - Recording...");
+ RecordingActivity.this.setTitle("OpenBike - Recording...");
break;
case RecordingService.STATE_PAUSED:
long tid = rs.getCurrentTrip();
@@ -112,7 +112,7 @@ public void onServiceConnected(ComponentName name, IBinder service) {
trip = TripData.fetchTrip(RecordingActivity.this, tid);
RecordingActivity.this.pauseButton.setEnabled(true);
RecordingActivity.this.pauseButton.setText("Resume");
- RecordingActivity.this.setTitle("CycleTracks - Paused...");
+ RecordingActivity.this.setTitle("OpenBike - Paused...");
break;
case RecordingService.STATE_FULL:
// Should never get here, right?
@@ -131,7 +131,7 @@ public void onClick(View v) {
isRecording = !isRecording;
if (isRecording) {
pauseButton.setText("Pause");
- RecordingActivity.this.setTitle("CycleTracks - Recording...");
+ RecordingActivity.this.setTitle("OpenBike - Recording...");
// Don't include pause time in trip duration
if (trip.pauseStartedAt > 0) {
trip.totalPauseTime += (System.currentTimeMillis() - trip.pauseStartedAt);
@@ -140,7 +140,7 @@ public void onClick(View v) {
Toast.makeText(getBaseContext(),"GPS restarted. It may take a moment to resync.", Toast.LENGTH_LONG).show();
} else {
pauseButton.setText("Resume");
- RecordingActivity.this.setTitle("CycleTracks - Paused...");
+ RecordingActivity.this.setTitle("OpenBike - Paused...");
trip.pauseStartedAt = System.currentTimeMillis();
Toast.makeText(getBaseContext(),"Recording paused; GPS now offline", Toast.LENGTH_LONG).show();
}
@@ -162,7 +162,7 @@ public void onClick(View v) {
}
// Save trip so far (points and extent, but no purpose or notes)
fi = new Intent(RecordingActivity.this, SaveTrip.class);
- trip.updateTrip("","","","");
+ trip.updateTrip("","","",3, 3, 3, "");
}
// Otherwise, cancel and go back to main screen
else {
diff --git a/src/org/sfcta/cycletracks/RecordingService.java b/src/co/openbike/cycletracks/RecordingService.java
similarity index 98%
rename from src/org/sfcta/cycletracks/RecordingService.java
rename to src/co/openbike/cycletracks/RecordingService.java
index 3c320de..f97319b 100644
--- a/src/org/sfcta/cycletracks/RecordingService.java
+++ b/src/co/openbike/cycletracks/RecordingService.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import java.util.Timer;
import java.util.TimerTask;
@@ -250,7 +250,7 @@ public void remindUser() {
notification.ledOffMS = 3000;
Context context = this;
- CharSequence contentTitle = "CycleTracks - Recording";
+ CharSequence contentTitle = "OpenBike - Recording";
CharSequence contentText = "Tap to finish your trip";
Intent notificationIntent = new Intent(context, RecordingActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
@@ -277,7 +277,7 @@ private void setNotification() {
Notification.FLAG_NO_CLEAR;
Context context = this;
- CharSequence contentTitle = "CycleTracks - Recording";
+ CharSequence contentTitle = "OpenBike - Recording";
CharSequence contentText = "Tap to finish your trip";
Intent notificationIntent = new Intent(context, RecordingActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
diff --git a/src/org/sfcta/cycletracks/SaveTrip.java b/src/co/openbike/cycletracks/SaveTrip.java
similarity index 95%
rename from src/org/sfcta/cycletracks/SaveTrip.java
rename to src/co/openbike/cycletracks/SaveTrip.java
index 2d9cd44..4215023 100644
--- a/src/org/sfcta/cycletracks/SaveTrip.java
+++ b/src/co/openbike/cycletracks/SaveTrip.java
@@ -19,13 +19,13 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
-import java.util.TimeZone;
import java.util.Map.Entry;
+import java.util.TimeZone;
import android.app.Activity;
import android.content.ComponentName;
@@ -42,6 +42,7 @@
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
+import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
@@ -159,6 +160,7 @@ void activateSubmitButton() {
btnSubmit.setEnabled(true);
btnSubmit.setOnClickListener(new View.OnClickListener() {
+
public void onClick(View v) {
TripData trip = TripData.fetchTrip(SaveTrip.this, tripid);
@@ -171,6 +173,10 @@ public void onClick(View v) {
return;
}
+ RatingBar safetyRating = (RatingBar) findViewById(R.id.rateSafety);
+ RatingBar convenienceRating = (RatingBar) findViewById(R.id.rateConvenience);
+ RatingBar easeRating = (RatingBar) findViewById(R.id.rateEase);
+
EditText notes = (EditText) findViewById(R.id.NotesField);
String fancyStartTime = DateFormat.getInstance().format(trip.startTime);
@@ -188,6 +194,9 @@ public void onClick(View v) {
trip.updateTrip(
purpose,
fancyStartTime, fancyEndInfo,
+ safetyRating.getRating(),
+ convenienceRating.getRating(),
+ easeRating.getRating(),
notes.getEditableText().toString());
trip.updateTripStatus(TripData.STATUS_COMPLETE);
resetService();
diff --git a/src/co/openbike/cycletracks/ShowMap.java b/src/co/openbike/cycletracks/ShowMap.java
new file mode 100644
index 0000000..d36f6a6
--- /dev/null
+++ b/src/co/openbike/cycletracks/ShowMap.java
@@ -0,0 +1,326 @@
+/** CycleTracks, Copyright 2009,2010 San Francisco County Transportation Authority
+ * San Francisco, CA, USA
+ *
+ * @author Billy Charlton
+ *
+ * This file is part of CycleTracks.
+ *
+ * CycleTracks is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * CycleTracks is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with CycleTracks. If not, see .
+ */
+
+// Tips and Tricks related to Mark's upgrade from Maps v1 to v2
+
+//4A:12:0D:09:BD:12:6E:E9:90:63:45:E2:E4:F2:5F:24:47:EE:80:14
+//SHA-1 of debug.keystore - https://developers.google.com/maps/documentation/android/start
+/*
+ * Key for Android apps (with certificates)
+ API key:
+ AIzaSyBsMS0AQ68bro0VByGEcs123SEWJ5t7zy8
+ Android apps:
+ 4A:12:0D:09:BD:12:6E:E9:90:63:45:E2:E4:F2:5F:24:47:EE:80:14;org.sfcta.cycletracks
+
+ https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw
+ //find location of lib by going into sdk downloads and hovering over map lib in extras
+ *
+ * Attribution Requirements. If you use the Google Maps Android API in your application, you must include the Google Play Services attribution text as part of a "Legal Notices" section in your application. Including legal notices as an independent menu item, or as part of an "About" menu item, is recommended. The attribution text is available by making a call to GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo.
+ *
+ *
+ *adding supprt v4 - http://developer.android.com/tools/extras/support-library.html#SettingUp
+ *
+ *helpful - http://stackoverflow.com/questions/13719263/unable-instantiate-android-gms-maps-mapfragment
+ *
+ http://stackoverflow.com/questions/16589821/android-app-crashes-after-sdk-tools-update-version-noclassdeffound-tool-versio
+
+ found a bug - after you record track and submit it and are on map page, an orientation change triggers a resubmission and you see toast
+ */
+package co.openbike.cycletracks;
+
+import java.util.ArrayList;
+
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Paint.Style;
+import android.graphics.Point;
+import android.graphics.drawable.Drawable;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.support.v4.app.FragmentActivity;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.Window;
+import android.widget.TextView;
+
+import com.google.android.gms.maps.CameraUpdateFactory;
+import com.google.android.gms.maps.GoogleMap;
+import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.MarkerOptions;
+import com.google.android.gms.maps.model.Polyline;
+import com.google.android.gms.maps.model.PolylineOptions;
+import com.google.android.maps.GeoPoint;
+import com.google.android.maps.MapView;
+import com.google.android.maps.Overlay;
+
+public class ShowMap extends FragmentActivity {
+ Drawable drawable;
+ ItemizedOverlayTrack gpspoints;
+ GoogleMap mMap;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().requestFeature(Window.FEATURE_NO_TITLE);
+ setContentView(R.layout.mapview);
+
+ mMap = ((SupportMapFragment) getSupportFragmentManager()
+ .findFragmentById(R.id.map)).getMap();
+
+ try {
+
+ mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
+ mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0))
+ .title("Marker"));
+ mMap.setMyLocationEnabled(true);
+
+ Bundle cmds = getIntent().getExtras();
+ long tripid = cmds.getLong("showtrip");
+
+ TripData trip = TripData.fetchTrip(this, tripid);
+
+ // Show trip details
+ TextView t1 = (TextView) findViewById(R.id.TextViewT1);
+ TextView t2 = (TextView) findViewById(R.id.TextViewT2);
+ TextView t3 = (TextView) findViewById(R.id.TextViewT3);
+ t1.setText(trip.purp);
+ t2.setText(trip.info);
+ t3.setText(trip.fancystart);
+
+ // Center & zoom the map
+ // need to divide by 1 power 6 to get values that will play nice
+ double higha = (trip.lathigh / 1E6);
+ double lowa = (trip.latlow / 1E6);
+ double higho = (trip.lgthigh / 1E6);
+ double lowo = (trip.lgtlow / 1E6);
+ double latcenter = (higha + lowa) / 2;
+ double lgtcenter = (higho + lowo) / 2;
+ LatLng center = new LatLng(latcenter, lgtcenter);
+ // debug output,
+ Log.d("MARK", "lat ctr: " + latcenter + ", lon ctr: " + lgtcenter);
+ // values for zoom are 1 to 21 with 21 being way zoomed in 15 is a
+ // couple block radius
+ // could get fancier here and alter the zoom level by the overall
+ // distance
+ // but good enough for now
+ mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(center, 15.0f));
+
+ if (gpspoints == null) {
+ AddPointsToMapLayerTask maptask = new AddPointsToMapLayerTask();
+ maptask.execute(trip);
+ } else {
+ // mapOverlays.add(gpspoints);
+ }
+ Log.d("MARK", "Possibly uploading trip data, trip status is: "
+ + trip.status);
+ // TODO: pass trip object into uploader and when db is updated,
+ // update the property of trip too (status) to avoid extra posts
+ if (trip.status < TripData.STATUS_SENT && cmds != null
+ && cmds.getBoolean("uploadTrip", false)) {
+ // And upload to the cloud database, too! W00t W00t!
+ TripUploader uploader = new TripUploader(ShowMap.this);
+ uploader.execute(trip.tripid);
+ }
+
+ } catch (Exception e) {
+ Log.e("GOT!", e.toString());
+ }
+ }
+
+ // @Override
+ // protected boolean isRouteDisplayed() {
+ // // Auto-generated method stub
+ // return false;
+ // }
+
+ // Make sure overlays get zapped when we go BACK
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK && mMap != null) {
+ mMap.clear();
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ private class AddPointsToMapLayerTask extends
+ AsyncTask {
+ TripData trip;
+
+ @Override
+ protected ItemizedOverlayTrack doInBackground(TripData... trips) {
+ trip = trips[0]; // always get just the first trip
+
+ drawable = getResources().getDrawable(R.drawable.point);
+ ShowMap.this.gpspoints = trip.getPoints(drawable);
+
+ return ShowMap.this.gpspoints;
+ }
+
+ @Override
+ protected void onPostExecute(ItemizedOverlayTrack gpspoints) {
+ // Lets convert this track into an array list of lat/lng points
+ //https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Polyline
+ DbAdapter mDb;
+ mDb = new DbAdapter(getApplicationContext());
+ mDb.openReadOnly();
+
+ Cursor points = mDb.fetchAllCoordsForTrip(trip.tripid);
+ ArrayList dataPoints = new ArrayList();
+ while (points.moveToNext()) {
+ double lat = points.getDouble(points
+ .getColumnIndex(mDb.K_POINT_LAT)) / 1E6;
+ double lng = points
+ .getDouble(points.getColumnIndex(mDb.K_POINT_LGT)) / 1E6;
+ dataPoints.add(new LatLng(lat, lng));
+// Log.d("MARK", "Adding: " + lat + ", " + lng);
+ }
+ Log.d("MARK", "points size: " + points.getCount());
+ PolylineOptions polylineOptions = new PolylineOptions()
+ .addAll(dataPoints).width(5).color(Color.RED);
+ Polyline polyline = mMap.addPolyline(polylineOptions);
+
+ // Add the points
+ // mapOverlays.add(ShowMap.this.gpspoints);
+
+ // Add the lines! W00t!
+ // mapOverlays.add(new LineOverlay(ShowMap.this.gpspoints));
+
+ // Add start & end pins
+ if (trip.startpoint != null) {
+ // mapOverlays.add(new PushPinOverlay(trip.startpoint,
+ // R.drawable.pingreen));
+ }
+ if (trip.endpoint != null) {
+ // mapOverlays.add(new PushPinOverlay(trip.endpoint,
+ // R.drawable.pinpurple));
+ }
+
+ // Redraw the map
+ // mapView.invalidate();
+ }
+ }
+
+ private static class LineOverlay extends Overlay {
+ private static final float REQ_ACCURACY_FOR_LINES = 25.0f; // Was 8.0,
+ // increased
+ // because
+ // test data
+ // was
+ // coming in
+ // at 20.0
+ private final ItemizedOverlayTrack track;
+
+ public LineOverlay(ItemizedOverlayTrack track) {
+ super();
+ this.track = track;
+ }
+
+ @Override
+ public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
+ long when) {
+ super.draw(canvas, mapView, shadow);
+
+ // Need at least two points to draw a line, duh
+ if (track.size() < 2)
+ return true;
+
+ // Build array of points
+ float[] points = new float[4 * track.size()];
+ int segments = 0;
+ int startx = -1;
+ int starty = -1;
+
+ for (int i = 0; i < track.size(); i++) {
+ CyclePoint z = (CyclePoint) track.getItem(i).getPoint();
+
+ // Skip lousy points
+ if (z.accuracy > REQ_ACCURACY_FOR_LINES) {
+ Log.v("debug", "skipping points with accuracy of "
+ + z.accuracy);
+ startx = -1;
+ continue;
+ }
+
+ // If this is the beginning of a new segment, great
+ Point screenPoint = new Point();
+ mapView.getProjection().toPixels(z, screenPoint);
+
+ if (startx == -1) {
+ startx = screenPoint.x;
+ starty = screenPoint.y;
+ continue;
+ }
+ int numpts = segments * 4;
+ points[numpts] = startx;
+ points[numpts + 1] = starty;
+ points[numpts + 2] = startx = screenPoint.x;
+ points[numpts + 3] = starty = screenPoint.y;
+ segments++;
+ }
+
+ // Line style
+ Paint paint = new Paint();
+ paint.setARGB(255, 0, 0, 255);
+ paint.setStrokeWidth(5);
+ paint.setStyle(Style.FILL_AND_STROKE);
+
+ canvas.drawLines(points, 0, segments * 4, paint);
+ return false;
+ }
+ }
+
+ class PushPinOverlay extends Overlay {
+ GeoPoint p;
+ int d;
+
+ public PushPinOverlay(GeoPoint p, int drawrsrc) {
+ super();
+ this.p = p;
+ this.d = drawrsrc;
+ }
+
+ @Override
+ public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
+ long when) {
+ super.draw(canvas, mapView, shadow);
+
+ // ---translate the GeoPoint to screen pixels---
+ Point screenPoint = new Point();
+ mapView.getProjection().toPixels(p, screenPoint);
+
+ // ---add the marker---
+ Bitmap bmp = BitmapFactory.decodeResource(getResources(), d);
+ int height = bmp.getScaledHeight(canvas);
+ int width = Double.valueOf(0.133333 * bmp.getScaledWidth(canvas))
+ .intValue(); // 4/30 pixels: how far right we want the
+ // pushpin
+
+ canvas.drawBitmap(bmp, screenPoint.x - width, screenPoint.y
+ - height, null);
+ return true;
+ }
+ }
+}
diff --git a/src/org/sfcta/cycletracks/TripData.java b/src/co/openbike/cycletracks/TripData.java
similarity index 94%
rename from src/org/sfcta/cycletracks/TripData.java
rename to src/co/openbike/cycletracks/TripData.java
index 8eb0cbd..07e7c13 100644
--- a/src/org/sfcta/cycletracks/TripData.java
+++ b/src/co/openbike/cycletracks/TripData.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import android.content.Context;
import android.database.Cursor;
@@ -181,8 +181,8 @@ private void addPointToSavedMap(int lat, int lgt, double currentTime, float acc)
}
boolean addPointNow(Location loc, double currentTime, float dst) {
- int lat = (int) (loc.getLatitude() * 1E6);
- int lgt = (int) (loc.getLongitude() * 1E6);
+ int lat = Double.valueOf(loc.getLatitude() * 1.0E6).intValue();
+ int lgt = Double.valueOf(loc.getLongitude() * 1.0E6).intValue();
// Skip duplicates
if (latestlat == lat && latestlgt == lgt)
@@ -209,7 +209,7 @@ boolean addPointNow(Location loc, double currentTime, float dst) {
mDb.open();
boolean rtn = mDb.addCoordToTrip(tripid, pt);
- rtn = rtn && mDb.updateTrip(tripid, "", startTime, "", "", "",
+ rtn = rtn && mDb.updateTrip(tripid, "", startTime, "", "", 3.0f, 3.0f, 3.0f, "",
lathigh, latlow, lgthigh, lgtlow, distance);
mDb.close();
@@ -232,11 +232,11 @@ public boolean getStatus(int tripStatus) {
return rtn;
}
- public void updateTrip() { updateTrip("","","",""); }
- public void updateTrip(String purpose, String fancyStart, String fancyInfo, String notes) {
+ public void updateTrip() { updateTrip("","","",3.0f,3.0f,3.0f,""); }
+ public void updateTrip(String purpose, String fancyStart, String fancyInfo, float safety, float convenience, float ease, String notes) {
// Save the trip details to the phone database. W00t!
mDb.open();
- mDb.updateTrip(tripid, purpose, startTime, fancyStart, fancyInfo, notes,
+ mDb.updateTrip(tripid, purpose, startTime, fancyStart, fancyInfo, safety, convenience, ease, notes,
lathigh, latlow, lgthigh, lgtlow, distance);
mDb.close();
}
diff --git a/src/org/sfcta/cycletracks/TripUploader.java b/src/co/openbike/cycletracks/TripUploader.java
similarity index 87%
rename from src/org/sfcta/cycletracks/TripUploader.java
rename to src/co/openbike/cycletracks/TripUploader.java
index f39a9bd..082ae60 100644
--- a/src/org/sfcta/cycletracks/TripUploader.java
+++ b/src/co/openbike/cycletracks/TripUploader.java
@@ -19,7 +19,7 @@
* along with CycleTracks. If not, see .
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import java.io.BufferedReader;
import java.io.IOException;
@@ -30,8 +30,8 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Vector;
import java.util.Map.Entry;
+import java.util.Vector;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
@@ -151,14 +151,13 @@ private Vector getTripData(long tripId) {
mDb.openReadOnly();
Cursor tripCursor = mDb.fetchTrip(tripId);
- String note = tripCursor.getString(tripCursor
- .getColumnIndex(DbAdapter.K_TRIP_NOTE));
- String purpose = tripCursor.getString(tripCursor
- .getColumnIndex(DbAdapter.K_TRIP_PURP));
- Double startTime = tripCursor.getDouble(tripCursor
- .getColumnIndex(DbAdapter.K_TRIP_START));
- Double endTime = tripCursor.getDouble(tripCursor
- .getColumnIndex(DbAdapter.K_TRIP_END));
+ String note = tripCursor.getString(tripCursor.getColumnIndex(DbAdapter.K_TRIP_NOTE));
+ String purpose = tripCursor.getString(tripCursor.getColumnIndex(DbAdapter.K_TRIP_PURP));
+ Double startTime = tripCursor.getDouble(tripCursor.getColumnIndex(DbAdapter.K_TRIP_START));
+ Double endTime = tripCursor.getDouble(tripCursor.getColumnIndex(DbAdapter.K_TRIP_END));
+ Float ease = tripCursor.getFloat(tripCursor.getColumnIndex(DbAdapter.K_TRIP_EASE));
+ Float safety = tripCursor.getFloat(tripCursor.getColumnIndex(DbAdapter.K_TRIP_SAFETY));
+ Float convenience = tripCursor.getFloat(tripCursor.getColumnIndex(DbAdapter.K_TRIP_CONVENIENCE));
tripCursor.close();
mDb.close();
@@ -167,6 +166,9 @@ private Vector getTripData(long tripId) {
tripData.add(purpose);
tripData.add(df.format(startTime));
tripData.add(df.format(endTime));
+ tripData.add(ease.toString());
+ tripData.add(safety.toString());
+ tripData.add(convenience.toString());
return tripData;
}
@@ -193,6 +195,10 @@ private List getPostData(long tripId) throws JSONException {
String purpose = tripData.get(1);
String startTime = tripData.get(2);
String endTime = tripData.get(3);
+ String ease = tripData.get(4);
+ String safety = tripData.get(5);
+ String convenience = tripData.get(6);
+
List nameValuePairs = new ArrayList(2);
nameValuePairs.add(new BasicNameValuePair("coords", coords.toString()));
@@ -202,6 +208,9 @@ private List getPostData(long tripId) throws JSONException {
nameValuePairs.add(new BasicNameValuePair("purpose", purpose));
nameValuePairs.add(new BasicNameValuePair("start", startTime));
nameValuePairs.add(new BasicNameValuePair("end", endTime));
+ nameValuePairs.add(new BasicNameValuePair("ease", ease));
+ nameValuePairs.add(new BasicNameValuePair("safety", safety));
+ nameValuePairs.add(new BasicNameValuePair("convenience", convenience));
nameValuePairs.add(new BasicNameValuePair("version", "2"));
return nameValuePairs;
@@ -247,7 +256,7 @@ boolean uploadOneTrip(long currentTripId) {
Log.v("PostData", nameValuePairs.toString());
HttpClient client = new DefaultHttpClient();
- final String postUrl = "http://bikedatabase.sfcta.org/post/";
+ final String postUrl = "http://upload.openbike.co";
HttpPost postRequest = new HttpPost(postUrl);
try {
@@ -258,7 +267,8 @@ boolean uploadOneTrip(long currentTripId) {
JSONObject responseData = new JSONObject(responseString);
if (responseData.getString("status").equals("success")) {
mDb.open();
- mDb.updateTripStatus(currentTripId, TripData.STATUS_SENT);
+ boolean updateResult = mDb.updateTripStatus(currentTripId, TripData.STATUS_SENT);
+ Log.d("MARK", "updateTripStatus db result: " + updateResult);
mDb.close();
result = true;
}
@@ -304,7 +314,7 @@ protected Boolean doInBackground(Long... tripid) {
@Override
protected void onPreExecute() {
- Toast.makeText(mCtx.getApplicationContext(),"Submitting trip. Thanks for using CycleTracks!", Toast.LENGTH_LONG).show();
+ Toast.makeText(mCtx.getApplicationContext(),"Submitting trip. Thanks for using OpenBike!", Toast.LENGTH_LONG).show();
}
@Override
@@ -313,10 +323,10 @@ protected void onPostExecute(Boolean result) {
if (result) {
Toast.makeText(mCtx.getApplicationContext(),"Trip uploaded successfully.", Toast.LENGTH_SHORT).show();
} else {
- Toast.makeText(mCtx.getApplicationContext(),"CycleTracks couldn't upload the trip, and will retry when your next trip is completed.", Toast.LENGTH_LONG).show();
+ Toast.makeText(mCtx.getApplicationContext(),"OpenBike couldn't upload the trip, and will retry when your next trip is completed.", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
// Just don't toast if the view has gone out of context
}
}
-}
+}
\ No newline at end of file
diff --git a/src/org/sfcta/cycletracks/UserInfoActivity.java b/src/co/openbike/cycletracks/UserInfoActivity.java
similarity index 99%
rename from src/org/sfcta/cycletracks/UserInfoActivity.java
rename to src/co/openbike/cycletracks/UserInfoActivity.java
index 7cbc885..bab03cb 100644
--- a/src/org/sfcta/cycletracks/UserInfoActivity.java
+++ b/src/co/openbike/cycletracks/UserInfoActivity.java
@@ -7,7 +7,7 @@
* @author Billy Charlton
*
*/
-package org.sfcta.cycletracks;
+package co.openbike.cycletracks;
import java.util.Map;
import java.util.Map.Entry;
diff --git a/src/org/sfcta/cycletracks/ShowMap.java b/src/org/sfcta/cycletracks/ShowMap.java
deleted file mode 100644
index d63c70b..0000000
--- a/src/org/sfcta/cycletracks/ShowMap.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/** CycleTracks, Copyright 2009,2010 San Francisco County Transportation Authority
- * San Francisco, CA, USA
- *
- * @author Billy Charlton
- *
- * This file is part of CycleTracks.
- *
- * CycleTracks is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CycleTracks is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with CycleTracks. If not, see .
- */
-
-package org.sfcta.cycletracks;
-
-import java.util.List;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Point;
-import android.graphics.Paint.Style;
-import android.graphics.drawable.Drawable;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.Window;
-import android.widget.TextView;
-
-import com.google.android.maps.GeoPoint;
-import com.google.android.maps.MapActivity;
-import com.google.android.maps.MapController;
-import com.google.android.maps.MapView;
-import com.google.android.maps.Overlay;
-
-public class ShowMap extends MapActivity {
- private MapView mapView;
- List mapOverlays;
- Drawable drawable;
- ItemizedOverlayTrack gpspoints;
- float[] lineCoords;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getWindow().requestFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.mapview);
-
- try {
- // Set zoom controls
- mapView = (MapView) findViewById(R.id.mapview);
- mapView.setBuiltInZoomControls(true);
-
- // Set up the point layer
- mapOverlays = mapView.getOverlays();
- if (mapOverlays != null) mapOverlays.clear();
-
- Bundle cmds = getIntent().getExtras();
- long tripid = cmds.getLong("showtrip");
-
- TripData trip = TripData.fetchTrip(this, tripid);
-
- // Show trip details
- TextView t1 = (TextView) findViewById(R.id.TextViewT1);
- TextView t2 = (TextView) findViewById(R.id.TextViewT2);
- TextView t3 = (TextView) findViewById(R.id.TextViewT3);
- t1.setText(trip.purp);
- t2.setText(trip.info);
- t3.setText(trip.fancystart);
-
- // Center & zoom the map
- int latcenter = (trip.lathigh + trip.latlow) / 2;
- int lgtcenter = (trip.lgthigh + trip.lgtlow) / 2;
- GeoPoint center = new GeoPoint(latcenter, lgtcenter);
- MapController mc = mapView.getController();
- mc.animateTo(center);
- // Add 500 to map span, to guarantee pins fit on map
- mc.zoomToSpan(500+trip.lathigh - trip.latlow, 500+trip.lgthigh - trip.lgtlow);
-
- if (gpspoints == null) {
- AddPointsToMapLayerTask maptask = new AddPointsToMapLayerTask();
- maptask.execute(trip);
- } else {
- mapOverlays.add(gpspoints);
- }
-
- if (trip.status < TripData.STATUS_SENT
- && cmds != null
- && cmds.getBoolean("uploadTrip", false)) {
- // And upload to the cloud database, too! W00t W00t!
- TripUploader uploader = new TripUploader(ShowMap.this);
- uploader.execute(trip.tripid);
- }
-
- } catch (Exception e) {
- Log.e("GOT!",e.toString());
- }
- }
-
- @Override
- protected boolean isRouteDisplayed() {
- // Auto-generated method stub
- return false;
- }
-
- // Make sure overlays get zapped when we go BACK
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK && mapView!=null) {
- mapView.getOverlays().clear();
- }
- return super.onKeyDown(keyCode, event);
- }
-
- private class AddPointsToMapLayerTask extends AsyncTask {
- TripData trip;
-
- @Override
- protected ItemizedOverlayTrack doInBackground(TripData... trips) {
- trip = trips[0]; // always get just the first trip
-
- drawable = getResources().getDrawable(R.drawable.point);
- ShowMap.this.gpspoints = trip.getPoints(drawable);
-
- return ShowMap.this.gpspoints;
- }
-
- @Override
- protected void onPostExecute(ItemizedOverlayTrack gpspoints) {
- // Add the points
- mapOverlays.add(ShowMap.this.gpspoints);
-
- // Add the lines! W00t!
- mapOverlays.add(new LineOverlay(ShowMap.this.gpspoints));
-
- // Add start & end pins
- if (trip.startpoint != null) {
- mapOverlays.add(new PushPinOverlay(trip.startpoint, R.drawable.pingreen));
- }
- if (trip.endpoint != null) {
- mapOverlays.add(new PushPinOverlay(trip.endpoint, R.drawable.pinpurple));
- }
-
- // Redraw the map
- mapView.invalidate();
- }
- }
-
-
- class LineOverlay extends com.google.android.maps.Overlay
- {
- ItemizedOverlayTrack track;
-
- public LineOverlay(ItemizedOverlayTrack track) {
- super();
- this.track = track;
- }
-
- @Override
- public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
- super.draw(canvas, mapView, shadow);
-
- // Need at least two points to draw a line, duh
- if (track.size()<2) return true;
-
- // Build array of points
- float[] points = new float[4 * track.size()];
- int segments = 0;
- int startx = -1; int starty = -1;
-
- for (int i=0; i 8) {
- startx = -1;
- continue;
- }
-
- // If this is the beginning of a new segment, great
- Point screenPoint = new Point();
- mapView.getProjection().toPixels(z, screenPoint);
-
- if (startx == -1) {
- startx = screenPoint.x;
- starty = screenPoint.y;
- continue;
- }
- int numpts = segments*4;
- points[numpts] = startx;
- points[numpts+1] = starty;
- points[numpts+2] = startx = screenPoint.x;
- points[numpts+3] = starty = screenPoint.y;
- segments++;
- }
-
- // Line style
- Paint paint = new Paint();
- paint.setARGB(255,0,0,255);
- paint.setStrokeWidth(5);
- paint.setStyle(Style.FILL_AND_STROKE);
-
- canvas.drawLines(points, 0, segments*4, paint);
- return false;
- }
- }
-
- class PushPinOverlay extends com.google.android.maps.Overlay
- {
- GeoPoint p;
- int d;
-
- public PushPinOverlay(GeoPoint p, int drawrsrc) {
- super();
- this.p=p;
- this.d=drawrsrc;
- }
-
- @Override
- public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
- super.draw(canvas, mapView, shadow);
-
- //---translate the GeoPoint to screen pixels---
- Point screenPoint = new Point();
- mapView.getProjection().toPixels(p, screenPoint);
-
- //---add the marker---
- Bitmap bmp = BitmapFactory.decodeResource(getResources(), d);
- int height = bmp.getScaledHeight(canvas);
- int width = (int)(0.133333 * bmp.getScaledWidth(canvas)); // 4/30 pixels: how far right we want the pushpin
-
- canvas.drawBitmap(bmp, screenPoint.x-width, screenPoint.y-height, null);
- return true;
- }
- }
-}
diff --git a/tests/.classpath b/tests/.classpath
index d35b9c8..56bc737 100644
--- a/tests/.classpath
+++ b/tests/.classpath
@@ -1,8 +1,9 @@
-
-
-
+
+
+
+
diff --git a/tests/default.properties b/tests/default.properties
deleted file mode 100644
index 126935e..0000000
--- a/tests/default.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system use,
-# "build.properties", and override values to adapt the script to your
-# project structure.
-
-# Project target.
-target=Google Inc.:Google APIs:3
-# Indicates whether an apk should be generated for each density.
-split.density=false
diff --git a/tests/project.properties b/tests/project.properties
new file mode 100644
index 0000000..f2536c2
--- /dev/null
+++ b/tests/project.properties
@@ -0,0 +1,16 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Indicates whether an apk should be generated for each density.
+split.density=false
+# Project target.
+target=Google Inc.:Google APIs:3