summaryrefslogtreecommitdiff
path: root/misc/client/gps-demo/AndroidGPSTracking/src
diff options
context:
space:
mode:
authorsjtufs <[email protected]>2013-08-25 15:45:55 +0800
committersjtufs <[email protected]>2013-08-25 15:45:55 +0800
commitac7633d8149a28af288ac0b850850cef9b13c151 (patch)
tree861fe3d57c114b5ec7f3141679428cc6302d21bc /misc/client/gps-demo/AndroidGPSTracking/src
parenta53f4d21238d2bccd58a22d7485e54f495dbd55d (diff)
This is alpha
Diffstat (limited to 'misc/client/gps-demo/AndroidGPSTracking/src')
-rw-r--r--misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/AndroidGPSTrackingActivity.java50
-rw-r--r--misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/GPSTracker.java200
-rw-r--r--misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/Tracker.java33
3 files changed, 283 insertions, 0 deletions
diff --git a/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/AndroidGPSTrackingActivity.java b/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/AndroidGPSTrackingActivity.java
new file mode 100644
index 0000000..cdc1413
--- /dev/null
+++ b/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/AndroidGPSTrackingActivity.java
@@ -0,0 +1,50 @@
+package com.example.gpstracking;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.Toast;
+
+public class AndroidGPSTrackingActivity extends Activity {
+
+ Button btnShowLocation;
+
+ // GPSTracker class
+ GPSTracker gps;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.main);
+
+ btnShowLocation = (Button) findViewById(R.id.btnShowLocation);
+
+ // show location button click event
+ btnShowLocation.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View arg0) {
+ // create class object
+ gps = new GPSTracker(AndroidGPSTrackingActivity.this);
+
+ // check if GPS enabled
+ if(gps.canGetLocation()){
+
+ double latitude = gps.getLatitude();
+ double longitude = gps.getLongitude();
+
+ Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
+ }else{
+ // can't get location
+ // GPS or Network is not enabled
+ // Ask user to enable GPS/network in settings
+ gps.showSettingsAlert();
+ }
+
+ }
+ });
+ }
+
+} \ No newline at end of file
diff --git a/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/GPSTracker.java b/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/GPSTracker.java
new file mode 100644
index 0000000..f1e77ad
--- /dev/null
+++ b/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/GPSTracker.java
@@ -0,0 +1,200 @@
+package com.example.gpstracking;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 10 * 60 * 1; // 1 minute
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled && !isNetworkEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("Network", "Network");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+ }
+ }
+ }
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (location == null) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS Enabled", "GPS Enabled");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+ }
+ }
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return location;
+ }
+
+ /**
+ * Stop using GPS listener
+ * Calling this function will stop using GPS in your app
+ */
+ public void stopUsingGPS(){
+ if(locationManager != null){
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ */
+ public double getLatitude(){
+ if(location != null){
+ latitude = location.getLatitude();
+ }
+
+ // return latitude
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ */
+ public double getLongitude(){
+ if(location != null){
+ longitude = location.getLongitude();
+ }
+
+ // return longitude
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ * @return boolean
+ */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ /**
+ * Function to show settings alert dialog
+ * On pressing Settings button will lauch Settings Options
+ */
+ public void showSettingsAlert(){
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,int which) {
+ Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+}
diff --git a/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/Tracker.java b/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/Tracker.java
new file mode 100644
index 0000000..2e08a91
--- /dev/null
+++ b/misc/client/gps-demo/AndroidGPSTracking/src/com/example/gpstracking/Tracker.java
@@ -0,0 +1,33 @@
+package com.example.gpstracking;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 60 * 5;
+
+ Controller controller;
+
+ public Tracker(Controller newController) {
+ controller = newController;
+ }
+
+ public void run() {
+ public Timer timer;
+ TimerTask task = new GPSTask();
+ timer.schedule(new GPSTask(), 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ public void run() {
+ GPSTracker tracker;
+ tracker = new GPSTracker(Tracker.this);
+
+ double latitude = tracker.getLatitude();
+ double longitude = tracker.getLongitude();
+
+ controller.recieveLocation(latitude, longitude);
+ }
+ }
+}