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