Browse Source

threatmap now tracks your movement

Fabio Arnold 9 years ago
parent
commit
e715dc8b5b

+ 27 - 23
src/de/tudarmstadt/informatik/hostage/ui/fragment/ThreatMapFragment.java

@@ -9,12 +9,14 @@ import java.util.Map;
 
 import android.app.Activity;
 import android.app.AlertDialog;
-import android.app.Fragment;
 import android.app.FragmentManager;
+import android.content.Context;
 import android.content.DialogInterface;
-import android.content.SharedPreferences;
 import android.graphics.Color;
+import android.location.Criteria;
 import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
 import android.os.Bundle;
 import android.text.Html;
 import android.view.InflateException;
@@ -25,9 +27,6 @@ import android.widget.TextView;
 
 import com.google.android.gms.common.ConnectionResult;
 import com.google.android.gms.common.GooglePlayServicesClient;
-import com.google.android.gms.location.LocationClient;
-import com.google.android.gms.location.LocationListener;
-import com.google.android.gms.location.LocationRequest;
 import com.google.android.gms.maps.CameraUpdateFactory;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.MapFragment;
@@ -63,13 +62,9 @@ public class ThreatMapFragment extends TrackerFragment implements GoogleMap.OnIn
 
 	private static HashMap<String, String> sMarkerIDToSSID = new HashMap<String, String>();
 
-	private LocationClient mLocationClient;
-
-	private static final LocationRequest REQUEST = LocationRequest.create()
-			.setExpirationDuration(5000) // 5 seconds
-			.setInterval(5000)           // 5 seconds
-			.setFastestInterval(16)      // 16ms = 60fps
-			.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
+	private LocationManager mLocationManager;
+	//private LocationClient mLocationClient;
+	private String mLocationProvider;
 
 	/**
 	 * if google play services aren't available an error notification will be displayed
@@ -119,17 +114,14 @@ public class ThreatMapFragment extends TrackerFragment implements GoogleMap.OnIn
 	 */
 	@Override
 	public void onConnected(Bundle bundle) {
-		mLocationClient.requestLocationUpdates(REQUEST, this);
 	}
 
 	@Override
 	public void onDisconnected() {
-
 	}
 
 	@Override
 	public void onConnectionFailed(ConnectionResult connectionResult) {
-
 	}
 
 	@Override
@@ -138,6 +130,18 @@ public class ThreatMapFragment extends TrackerFragment implements GoogleMap.OnIn
 				new LatLng(location.getLatitude(), location.getLongitude())));
 	}
 
+	@Override
+	public void onStatusChanged(String provider, int status, Bundle extras) {
+	}
+
+	@Override
+	public void onProviderEnabled(String provider) {
+	}
+
+	@Override
+	public void onProviderDisabled(String provider) {
+	}
+
 	/**
 	 * helper class
 	 * easier to use than LatLng
@@ -395,6 +399,12 @@ public class ThreatMapFragment extends TrackerFragment implements GoogleMap.OnIn
 				}
 			});
 
+			mLocationManager = (LocationManager)activity.getSystemService(Context.LOCATION_SERVICE);
+			Criteria criteria = new Criteria();
+			criteria.setAccuracy(Criteria.ACCURACY_FINE);
+			mLocationProvider = mLocationManager.getBestProvider(criteria, false);
+			mLocationManager.requestLocationUpdates(mLocationProvider, (long)0, 1000.0f, (LocationListener)this);
+
 			sMap.setMyLocationEnabled(true);
 
 			LatLng tudarmstadt = new LatLng(49.86923, 8.6632768); // default location
@@ -424,18 +434,12 @@ public class ThreatMapFragment extends TrackerFragment implements GoogleMap.OnIn
 	@Override
 	public void onResume() {
 		super.onResume();
-		if (mLocationClient == null) {
-			mLocationClient = new LocationClient(MainActivity.getInstance().getApplicationContext(),
-					this, this);
-		}
-		mLocationClient.connect();
+		mLocationManager.requestLocationUpdates(mLocationProvider, 0, 1000.0f, this);
 	}
 
 	@Override
 	public void onPause() {
 		super.onPause();
-		if (mLocationClient != null) {
-			mLocationClient.disconnect();
-		}
+		mLocationManager.removeUpdates(this);
 	}
 }