Add the current position on the map.
This commit is contained in:
parent
c757e860b6
commit
05f03941da
|
|
@ -3,11 +3,14 @@ package fr.chteufleur.mytrackingdog;
|
|||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.location.LocationManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.RequiresApi;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.WindowManager;
|
||||
|
|
@ -18,9 +21,19 @@ 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.mylocation.GpsMyLocationProvider;
|
||||
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay;
|
||||
|
||||
import fr.chteufleur.mytrackingdog.services.IServiceGps;
|
||||
import fr.chteufleur.mytrackingdog.services.ServiceGps;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
public static final String TAG = "MainActivity";
|
||||
|
||||
private MyLocationNewOverlay mLocationOverlay;
|
||||
private IServiceGps serviceGps = null;
|
||||
|
||||
Context ctx = null;
|
||||
MapView map = null;
|
||||
|
||||
|
|
@ -57,6 +70,10 @@ public class MainActivity extends AppCompatActivity {
|
|||
checkPermissions();
|
||||
}
|
||||
|
||||
if (serviceGps == null) {
|
||||
serviceGps = new ServiceGps();
|
||||
}
|
||||
|
||||
//load/initialize the osmdroid configuration, this can be done
|
||||
ctx = getApplicationContext();
|
||||
Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));
|
||||
|
|
@ -84,10 +101,25 @@ public class MainActivity extends AppCompatActivity {
|
|||
mapController.setZoom(11.0);
|
||||
GeoPoint startPoint = new GeoPoint(45.0000, 5.0000);
|
||||
mapController.setCenter(startPoint);
|
||||
|
||||
|
||||
final DisplayMetrics dm = ctx.getResources().getDisplayMetrics();
|
||||
this.mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(ctx), map);
|
||||
map.getOverlays().add(this.mLocationOverlay);
|
||||
mLocationOverlay.enableMyLocation();
|
||||
mLocationOverlay.enableFollowLocation();
|
||||
mLocationOverlay.setOptionsMenuEnabled(true);
|
||||
}
|
||||
|
||||
public void onResume(){
|
||||
super.onResume();
|
||||
|
||||
((ServiceGps) serviceGps).setLocationManager((LocationManager) getSystemService(ctx.LOCATION_SERVICE));
|
||||
serviceGps.start();
|
||||
|
||||
mLocationOverlay.enableFollowLocation();
|
||||
mLocationOverlay.enableMyLocation();
|
||||
|
||||
//this will refresh the osmdroid configuration on resuming.
|
||||
//if you make changes to the configuration, use
|
||||
//SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
|
@ -99,6 +131,10 @@ public class MainActivity extends AppCompatActivity {
|
|||
|
||||
public void onPause(){
|
||||
super.onPause();
|
||||
|
||||
mLocationOverlay.disableFollowLocation();
|
||||
mLocationOverlay.disableMyLocation();
|
||||
|
||||
//this will refresh the osmdroid configuration on resuming.
|
||||
//if you make changes to the configuration, use
|
||||
//SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
|
@ -108,6 +144,13 @@ public class MainActivity extends AppCompatActivity {
|
|||
}
|
||||
}
|
||||
|
||||
public void onBackPressed() {
|
||||
super.onBackPressed();
|
||||
if (serviceGps != null) {
|
||||
serviceGps.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
|
|
@ -130,6 +173,8 @@ public class MainActivity extends AppCompatActivity {
|
|||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||
switch (requestCode) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
package fr.chteufleur.mytrackingdog.services;
|
||||
|
||||
public interface IServiceGps {
|
||||
|
||||
public void start();
|
||||
public void stop();
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
package fr.chteufleur.mytrackingdog.services;
|
||||
|
||||
import android.location.Location;
|
||||
import android.location.LocationListener;
|
||||
import android.location.LocationManager;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import fr.chteufleur.mytrackingdog.MainActivity;
|
||||
|
||||
public class ServiceGps implements IServiceGps, LocationListener {
|
||||
|
||||
private static final String TAG = "ServiceGps";
|
||||
private LocationManager locationManager;
|
||||
private Location currentLocation = null;
|
||||
|
||||
public void setLocationManager(LocationManager locationManager) {
|
||||
this.locationManager = locationManager;
|
||||
}
|
||||
|
||||
public Location getCurrentLocation() {
|
||||
return currentLocation;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
try {
|
||||
this.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);
|
||||
} catch (SecurityException ex) {
|
||||
Log.e(TAG, "Location permission is not activated.", ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
this.locationManager.removeUpdates(this);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLocationChanged(Location location) {
|
||||
currentLocation = location;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged(String s, int i, Bundle bundle) {
|
||||
stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderEnabled(String s) {
|
||||
start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderDisabled(String s) {
|
||||
stop();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue