+
+
+
+
+
+
diff --git a/phoneClients/android/Android/.gitignore b/phoneClients/android/Android/.gitignore
new file mode 100644
index 0000000..d6bfc95
--- /dev/null
+++ b/phoneClients/android/Android/.gitignore
@@ -0,0 +1,4 @@
+.gradle
+/local.properties
+/.idea/workspace.xml
+.DS_Store
diff --git a/phoneClients/android/Android/.idea/.name b/phoneClients/android/Android/.idea/.name
new file mode 100644
index 0000000..37cdced
--- /dev/null
+++ b/phoneClients/android/Android/.idea/.name
@@ -0,0 +1 @@
+GpsTracker
\ No newline at end of file
diff --git a/phoneClients/android/Android/.idea/compiler.xml b/phoneClients/android/Android/.idea/compiler.xml
new file mode 100644
index 0000000..217af47
--- /dev/null
+++ b/phoneClients/android/Android/.idea/compiler.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/.idea/copyright/profiles_settings.xml b/phoneClients/android/Android/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000..3572571
--- /dev/null
+++ b/phoneClients/android/Android/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/phoneClients/android/Android/.idea/encodings.xml b/phoneClients/android/Android/.idea/encodings.xml
new file mode 100644
index 0000000..e206d70
--- /dev/null
+++ b/phoneClients/android/Android/.idea/encodings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/phoneClients/android/Android/.idea/gradle.xml b/phoneClients/android/Android/.idea/gradle.xml
new file mode 100644
index 0000000..aa006ab
--- /dev/null
+++ b/phoneClients/android/Android/.idea/gradle.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/.idea/libraries/ComAndroidSupportAppcompatV71900_aar.xml b/phoneClients/android/Android/.idea/libraries/ComAndroidSupportAppcompatV71900_aar.xml
new file mode 100644
index 0000000..2a05343
--- /dev/null
+++ b/phoneClients/android/Android/.idea/libraries/ComAndroidSupportAppcompatV71900_aar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phoneClients/android/Android/.idea/libraries/ComGoogleAndroidGmsPlayServices4030_aar.xml b/phoneClients/android/Android/.idea/libraries/ComGoogleAndroidGmsPlayServices4030_aar.xml
new file mode 100644
index 0000000..0997482
--- /dev/null
+++ b/phoneClients/android/Android/.idea/libraries/ComGoogleAndroidGmsPlayServices4030_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phoneClients/android/Android/.idea/libraries/support_v4_19_0_0.xml b/phoneClients/android/Android/.idea/libraries/support_v4_19_0_0.xml
new file mode 100644
index 0000000..0279a24
--- /dev/null
+++ b/phoneClients/android/Android/.idea/libraries/support_v4_19_0_0.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phoneClients/android/Android/.idea/misc.xml b/phoneClients/android/Android/.idea/misc.xml
new file mode 100644
index 0000000..b153e48
--- /dev/null
+++ b/phoneClients/android/Android/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/.idea/modules.xml b/phoneClients/android/Android/.idea/modules.xml
new file mode 100644
index 0000000..a482390
--- /dev/null
+++ b/phoneClients/android/Android/.idea/modules.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/.idea/scopes/scope_settings.xml b/phoneClients/android/Android/.idea/scopes/scope_settings.xml
new file mode 100644
index 0000000..922003b
--- /dev/null
+++ b/phoneClients/android/Android/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/phoneClients/android/Android/.idea/vcs.xml b/phoneClients/android/Android/.idea/vcs.xml
new file mode 100644
index 0000000..def6a6a
--- /dev/null
+++ b/phoneClients/android/Android/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/Android.iml b/phoneClients/android/Android/Android.iml
new file mode 100644
index 0000000..3f54ba1
--- /dev/null
+++ b/phoneClients/android/Android/Android.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/GpsTracker/.gitignore b/phoneClients/android/Android/GpsTracker/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/phoneClients/android/Android/GpsTracker/GpsTracker.iml b/phoneClients/android/Android/GpsTracker/GpsTracker.iml
new file mode 100644
index 0000000..a4779a6
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/GpsTracker.iml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/GpsTracker/build.gradle b/phoneClients/android/Android/GpsTracker/build.gradle
new file mode 100644
index 0000000..16e9707
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/build.gradle
@@ -0,0 +1,29 @@
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:0.6.+'
+ }
+}
+apply plugin: 'android'
+
+repositories {
+ mavenCentral()
+}
+
+android {
+ compileSdkVersion 19
+ buildToolsVersion "19.0.0"
+
+ defaultConfig {
+ minSdkVersion 10
+ targetSdkVersion 19
+ }
+}
+
+dependencies {
+ compile 'com.android.support:appcompat-v7:+'
+ compile 'com.google.android.gms:play-services:4.0.30'
+}
+
diff --git a/phoneClients/android/Android/GpsTracker/src/main/AndroidManifest.xml b/phoneClients/android/Android/GpsTracker/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..3f8e6a0
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/AndroidManifest.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/GpsTracker/src/main/ic_launcher-web.png b/phoneClients/android/Android/GpsTracker/src/main/ic_launcher-web.png
new file mode 100644
index 0000000..5c63bc5
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/ic_launcher-web.png
Binary files differ
diff --git a/phoneClients/android/Android/GpsTracker/src/main/java/com/websmithing/gpstracker/GpsTrackerActivity.java b/phoneClients/android/Android/GpsTracker/src/main/java/com/websmithing/gpstracker/GpsTrackerActivity.java
new file mode 100644
index 0000000..3b235a9
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/java/com/websmithing/gpstracker/GpsTrackerActivity.java
@@ -0,0 +1,174 @@
+package com.websmithing.gpstracker;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.app.ActionBarActivity;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.GooglePlayServicesClient;
+import com.google.android.gms.common.GooglePlayServicesUtil;
+import com.google.android.gms.location.LocationClient;
+import com.google.android.gms.location.LocationListener;
+import com.google.android.gms.location.LocationRequest;
+
+
+public class GpsTrackerActivity extends ActionBarActivity implements LocationListener, GooglePlayServicesClient.ConnectionCallbacks,
+ GooglePlayServicesClient.OnConnectionFailedListener {
+
+ private LocationRequest locationRequest;
+ private LocationClient locationClient;
+
+ private static TextView longitudeTextView;
+ private static TextView latitudeTextView;
+ private static TextView accuracyTextView;
+ private static TextView providerTextView;
+ private static TextView timeStampTextView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_gpstracker);
+
+ if (savedInstanceState == null) {
+ getSupportFragmentManager().beginTransaction()
+ .add(R.id.container, new PlaceholderFragment())
+ .commit();
+ }
+
+/*
+ // create a new global location parameters object
+ locationRequest = LocationRequest.create();
+ locationRequest.setInterval(5 * 1000);
+ locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
+ locationRequest.setFastestInterval(60 * 1000); // interval ceiling
+*/
+ int response = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
+ if(response == ConnectionResult.SUCCESS){
+ locationClient = new LocationClient(this,this,this);
+ locationClient.connect();
+ }
+ else{
+ Log.e("GpsTrackerActivity", "google play service error: " + response);
+ }
+ }
+
+ // called when startTrackingButton is tapped
+ public void startTracking(View v) {
+ Log.e("GpsTrackerActivity", "startTracking");
+ ((Button) v).setText("stop tracking");
+
+ if (locationClient != null && locationClient.isConnected()) {
+ Location location = locationClient.getLastLocation();
+ longitudeTextView.setText("longitude: " + location.getLongitude());
+ latitudeTextView.setText("latitude: " + location.getLatitude());
+
+ accuracyTextView.setText("accuracy: " + location.getAccuracy());
+ providerTextView.setText("provider: " + location.getProvider());
+ timeStampTextView.setText("timeStamp: " + location.getTime());
+ }
+ }
+
+ // called when startTrackingButton is tapped
+ public void stopTracking(View v) {
+ Log.e("GpsTrackerActivity", "stopTracking");
+ ((Button) v).setText("start tracking");
+
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ // Connect the client.
+ //mLocationClient.connect();
+ }
+
+ @Override
+ protected void onStop() {
+ // Disconnecting the client invalidates it.
+ //mLocationClient.disconnect();
+ super.onStop();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+
+ // LocationUtils.getLatLng(this, location);
+ }
+
+ /**
+ * Called by Location Services when the request to connect the
+ * client finishes successfully. At this point, you can
+ * request the current location or start periodic updates
+ */
+ @Override
+ public void onConnected(Bundle bundle) {
+
+ }
+
+ /**
+ * Called by Location Services if the connection to the
+ * location client drops because of an error.
+ */
+ @Override
+ public void onDisconnected() {
+
+ }
+
+ @Override
+ public void onConnectionFailed(ConnectionResult connectionResult) {
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.gps_tracker, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ switch (item.getItemId()) {
+ case R.id.action_settings:
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ /**
+ * A placeholder fragment containing a simple view.
+ */
+ public static class PlaceholderFragment extends Fragment {
+
+ public PlaceholderFragment() {
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.fragment_gpstracker, container, false);
+
+ longitudeTextView = (TextView)rootView.findViewById(R.id.longitudeTextView);
+ latitudeTextView = (TextView)rootView.findViewById(R.id.latitudeTextView);
+ accuracyTextView = (TextView)rootView.findViewById(R.id.accuracyTextView);
+ providerTextView = (TextView)rootView.findViewById(R.id.providerTextView);
+ timeStampTextView = (TextView)rootView.findViewById(R.id.timeStampTextView);
+
+ return rootView;
+ }
+ }
+
+}
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/drawable-hdpi/ic_launcher.png b/phoneClients/android/Android/GpsTracker/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..55621cc
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/drawable-mdpi/ic_launcher.png b/phoneClients/android/Android/GpsTracker/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..11ec206
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/drawable-xhdpi/ic_launcher.png b/phoneClients/android/Android/GpsTracker/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..7c02b78
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/drawable-xxhdpi/ic_launcher.png b/phoneClients/android/Android/GpsTracker/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..915d914
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/layout/activity_gpstracker.xml b/phoneClients/android/Android/GpsTracker/src/main/res/layout/activity_gpstracker.xml
new file mode 100644
index 0000000..33784e1
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/layout/activity_gpstracker.xml
@@ -0,0 +1,7 @@
+
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/layout/fragment_gpstracker.xml b/phoneClients/android/Android/GpsTracker/src/main/res/layout/fragment_gpstracker.xml
new file mode 100644
index 0000000..b8cd5d7
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/layout/fragment_gpstracker.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/menu/gps_tracker.xml b/phoneClients/android/Android/GpsTracker/src/main/res/menu/gps_tracker.xml
new file mode 100644
index 0000000..9cdba38
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/menu/gps_tracker.xml
@@ -0,0 +1,10 @@
+
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/values-w820dp/dimens.xml b/phoneClients/android/Android/GpsTracker/src/main/res/values-w820dp/dimens.xml
new file mode 100644
index 0000000..63fc816
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/values-w820dp/dimens.xml
@@ -0,0 +1,6 @@
+
+
+ 64dp
+
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/values/dimens.xml b/phoneClients/android/Android/GpsTracker/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..a0171a7
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/values/dimens.xml
@@ -0,0 +1,6 @@
+
+
+ 16dp
+ 16dp
+
+
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/values/strings.xml b/phoneClients/android/Android/GpsTracker/src/main/res/values/strings.xml
new file mode 100644
index 0000000..116a8ae
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/values/strings.xml
@@ -0,0 +1,85 @@
+
+
+
+ GpsTracker
+ hello worldish
+ latitude:
+ longitude:
+ provider:
+ timeStamp:
+ accuracy:
+ start tracking
+
+
+
+
+ %1$s %2$s %3$s
+
+
+ %1$.8f, %2$.8f
+
+
+ Settings
+
+
+ Lat/Long:
+ Address:
+
+
+ Client connected
+ Unknown connection error code: %1$d
+ Connection failed
+ Client disconnected
+ Get Address
+ Get Location
+
+ Illegal arguments: Latitude %1$.8f Longitude %2$.8f
+
+ Invalid intent action %1$s
+ Invalid integer request ID: %1$s
+ IO Exception in Geocoder.getFromLocation()
+ Periodic updates requested
+ Location updated
+ Location update failed
+
+ Location update error. code %1$d message %2$s
+
+
+ Location update error. No incoming location.
+
+ Periodic updates stopped
+ New location: %1$s
+ No address found for location
+ No connection: Cannot request location
+ Cannot get address. No geocoder available.
+ Location not available
+ Error resolved. Please re-try operation.
+ Google Play services: unable to resolve connection error.
+ Stopping periodic updates
+ Google Play services is available
+
+ Can\'t request location updates, previous request hasn\'t finished
+
+ Start Updates
+ Stop Updates
+ --Unknown--
+
+ Received an unknown activity request code %1$d in onActivityResult.
+
+
+ Connection failure error code: %1$d
+ Google Play services is disabled
+ An internal error occurred
+ The version of Google Play services on this device is not authentic
+ The specified account name is invalid
+ The app is not licensed to the user
+ Connection failure error message: %1$s
+ The application is misconfigured
+ Google Play services is missing
+ Additional resolution is required
+ A network error occurred
+ Google Play services is out of date
+ The user is not signed in
+ An unknown error occurred
+
+
\ No newline at end of file
diff --git a/phoneClients/android/Android/GpsTracker/src/main/res/values/styles.xml b/phoneClients/android/Android/GpsTracker/src/main/res/values/styles.xml
new file mode 100644
index 0000000..00a7ff8
--- /dev/null
+++ b/phoneClients/android/Android/GpsTracker/src/main/res/values/styles.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/GpsTrackerProject.iml b/phoneClients/android/Android/GpsTrackerProject.iml
new file mode 100644
index 0000000..94f1c61
--- /dev/null
+++ b/phoneClients/android/Android/GpsTrackerProject.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/phoneClients/android/Android/build.gradle b/phoneClients/android/Android/build.gradle
new file mode 100644
index 0000000..495c503
--- /dev/null
+++ b/phoneClients/android/Android/build.gradle
@@ -0,0 +1 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
diff --git a/phoneClients/android/Android/gradle/wrapper/gradle-wrapper.properties b/phoneClients/android/Android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..5b692a1
--- /dev/null
+++ b/phoneClients/android/Android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Dec 17 21:44:46 PST 2013
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/phoneClients/android/Android/gradlew b/phoneClients/android/Android/gradlew
new file mode 100644
index 0000000..91a7e26
--- /dev/null
+++ b/phoneClients/android/Android/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/phoneClients/android/Android/gradlew.bat b/phoneClients/android/Android/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/phoneClients/android/Android/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/phoneClients/android/Android/settings.gradle b/phoneClients/android/Android/settings.gradle
new file mode 100644
index 0000000..46d6e02
--- /dev/null
+++ b/phoneClients/android/Android/settings.gradle
@@ -0,0 +1 @@
+include ':GpsTracker'