diff --git a/app/src/main/java/fr/chteufleur/mytrackingdog/MainActivity.java b/app/src/main/java/fr/chteufleur/mytrackingdog/MainActivity.java index 9e2403d..228ce5c 100644 --- a/app/src/main/java/fr/chteufleur/mytrackingdog/MainActivity.java +++ b/app/src/main/java/fr/chteufleur/mytrackingdog/MainActivity.java @@ -15,7 +15,9 @@ import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.view.Surface; +import android.view.View; import android.view.WindowManager; +import android.widget.ImageButton; import android.widget.Toast; import org.osmdroid.api.IMapController; @@ -23,6 +25,7 @@ import org.osmdroid.config.Configuration; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; +import org.osmdroid.views.overlay.compass.CompassOverlay; import org.osmdroid.views.overlay.compass.IOrientationConsumer; import org.osmdroid.views.overlay.compass.IOrientationProvider; import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider; @@ -40,11 +43,13 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu public static final String TAG = "MainActivity"; private MyLocationNewOverlay mLocationOverlay; + private CompassOverlay mCompassOverlay; private IOrientationProvider compass = null; private IServiceGps serviceGps = null; private Context ctx = null; private MapView map = null; + private ImageButton btFollowMe; private Float trueNorth = 0f; private int deviceOrientation = 0; @@ -104,6 +109,11 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu GeoPoint startPoint = new GeoPoint(45.0000, 5.0000); mapController.setCenter(startPoint); + // Compass + this.mCompassOverlay = new CompassOverlay(ctx, new InternalCompassOrientationProvider(ctx), map); + map.getOverlays().add(this.mCompassOverlay); + this.mCompassOverlay.enableCompass(); + // Current position on the map this.mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(ctx), map); map.getOverlays().add(this.mLocationOverlay); @@ -111,6 +121,21 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu mLocationOverlay.enableFollowLocation(); mLocationOverlay.setOptionsMenuEnabled(true); + // Follow me + btFollowMe = (ImageButton) findViewById(R.id.ic_follow_me); + btFollowMe.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!mLocationOverlay.isFollowLocationEnabled()) { + mLocationOverlay.enableFollowLocation(); + btFollowMe.setImageResource(R.drawable.osm_ic_follow_me_on); + } else { + mLocationOverlay.disableFollowLocation(); + btFollowMe.setImageResource(R.drawable.osm_ic_follow_me); + } + } + }); + if (serviceGps == null) { serviceGps = new ServiceGps(); ((Observable) serviceGps).addObserver(this); @@ -172,6 +197,9 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu } private void pause() { + if (mCompassOverlay != null) { + mCompassOverlay.disableCompass(); + } if (compass != null) { compass.stopOrientationProvider(); compass.destroy(); diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index efe8f62..53f5345 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -1,9 +1,22 @@ - + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2241eff..dcda8dc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ MyTrackingDog Settings + Follow me