From 86459b20e62f26b61c374d138c5995e921ddb9b6 Mon Sep 17 00:00:00 2001 From: "de@itstall.de" <de@itstall.de> Date: Thu, 2 Apr 2020 12:34:59 +0200 Subject: [PATCH] Blue dot for current location --- .../freifunkfranken/view/MapsFragment.java | 138 +++++++++--------- 1 file changed, 65 insertions(+), 73 deletions(-) diff --git a/app/src/main/java/de/itstall/freifunkfranken/view/MapsFragment.java b/app/src/main/java/de/itstall/freifunkfranken/view/MapsFragment.java index fa1c154..9c461d5 100644 --- a/app/src/main/java/de/itstall/freifunkfranken/view/MapsFragment.java +++ b/app/src/main/java/de/itstall/freifunkfranken/view/MapsFragment.java @@ -25,16 +25,14 @@ import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.BitmapDescriptorFactory; +import com.google.android.gms.maps.model.CameraPosition; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import com.karumi.dexter.Dexter; import com.karumi.dexter.MultiplePermissionsReport; import com.karumi.dexter.PermissionToken; -import com.karumi.dexter.listener.PermissionDeniedResponse; -import com.karumi.dexter.listener.PermissionGrantedResponse; import com.karumi.dexter.listener.PermissionRequest; import com.karumi.dexter.listener.multi.MultiplePermissionsListener; -import com.karumi.dexter.listener.single.PermissionListener; import java.util.List; import java.util.Objects; @@ -101,6 +99,69 @@ public class MapsFragment extends Fragment implements OnMapReadyCallback { sharedPreferences = rootView.getContext() .getSharedPreferences(getResources().getString(R.string.app_name), 0); + getLocation(); + + return rootView; + } + + private void showApsOnMap() { + List<AccessPoint> accessPointList = new RequestAps( + Objects.requireNonNull( + this.getContext())) + .getSortedList( + sharedPreferences.getBoolean( + "MapOfflineRouter", + false) + , 0); + + for (int i = 0; i < accessPointList.size(); i++) { + LatLng ap = new LatLng( + accessPointList.get(i).getLat(), accessPointList.get(i).getLon()); + MarkerOptions markerOptions = new MarkerOptions() + .position(ap) + .title(accessPointList.get(i).getName()); + if (accessPointList.get(i).isOnline()) + markerOptions.icon( + BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)); + else + markerOptions.icon( + BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)); + mMap.addMarker(markerOptions); + } + } + + @Override + public void onMapReady(GoogleMap googleMap) { + mMap = googleMap; + + LatLng latLng = new LatLng(50.0489, 10.2301); + + CameraPosition cameraPosition = new CameraPosition.Builder() + .target(latLng) + .zoom(sharedPreferences.getInt("mapZoom", 10)) + .build(); + + mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); + mMap.setMyLocationEnabled(true); + + showApsOnMap(); + + if (progressDialog != null) progressDialog.dismiss(); + } + + @Override + public void onPause() { + locationManager.removeUpdates(customLocationListener); + super.onPause(); + } + + @Override + public void onResume() { + super.onResume(); + getLocation(); + } + + private void getLocation() { customLocationListener = new CustomLocationListener(locationListener); locationManager = (LocationManager) rootView.getContext() .getApplicationContext() @@ -132,7 +193,7 @@ public class MapsFragment extends Fragment implements OnMapReadyCallback { ) == PackageManager.PERMISSION_GRANTED ) { locationProvider = getEnabledLocationProvider(); - + assert locationProvider != null; locationManager .requestLocationUpdates( @@ -154,75 +215,6 @@ public class MapsFragment extends Fragment implements OnMapReadyCallback { } ) .check(); - - return rootView; - } - - private void showApsOnMap() { - List<AccessPoint> accessPointList = new RequestAps( - Objects.requireNonNull( - this.getContext())) - .getSortedList( - sharedPreferences.getBoolean( - "MapOfflineRouter", - false) - , 0); - - for (int i = 0; i < accessPointList.size(); i++) { - LatLng ap = new LatLng( - accessPointList.get(i).getLat(), accessPointList.get(i).getLon()); - MarkerOptions markerOptions = new MarkerOptions() - .position(ap) - .title(accessPointList.get(i).getName()); - if (accessPointList.get(i).isOnline()) - markerOptions.icon( - BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)); - else - markerOptions.icon( - BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)); - mMap.addMarker(markerOptions); - } - } - - @Override - public void onMapReady(GoogleMap googleMap) { - mMap = googleMap; - - mMap.moveCamera(CameraUpdateFactory.newLatLngZoom( - new LatLng(50.0489, 10.2301), - sharedPreferences.getInt("mapZoom", 10))); - showApsOnMap(); - - if (progressDialog != null) progressDialog.dismiss(); - } - - @Override - public void onPause() { - locationManager.removeUpdates(customLocationListener); - super.onPause(); - } - - @Override - public void onResume() { - super.onResume(); - Dexter.withActivity((Activity) rootView.getContext()).withPermission(Manifest.permission.ACCESS_FINE_LOCATION).withListener(new PermissionListener() { - @Override - public void onPermissionGranted(PermissionGrantedResponse response) { - if (ActivityCompat.checkSelfPermission(rootView.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 25, customLocationListener); - } - } - - @Override - public void onPermissionDenied(PermissionDeniedResponse response) { - - } - - @Override - public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) { - token.continuePermissionRequest(); - } - }).check(); } private String getEnabledLocationProvider() { -- GitLab