From 93f8ba54bc95ff784322b585c9860c9412719841 Mon Sep 17 00:00:00 2001
From: Hampus Rosenquist <github@hamros.se>
Date: Wed, 26 Oct 2022 00:38:26 +0200
Subject: [PATCH] Code clean up

---
 .../Android/app/src/main/AndroidManifest.xml  |  19 +-
 .../android/app/AircraftMapView.java          | 238 ++++++------------
 2 files changed, 77 insertions(+), 180 deletions(-)

diff --git a/drip-android-observer-master/Android/app/src/main/AndroidManifest.xml b/drip-android-observer-master/Android/app/src/main/AndroidManifest.xml
index a5a06dd..7106509 100644
--- a/drip-android-observer-master/Android/app/src/main/AndroidManifest.xml
+++ b/drip-android-observer-master/Android/app/src/main/AndroidManifest.xml
@@ -29,31 +29,14 @@
 
         <uses-library android:name="org.apache.http.legacy" android:required="false"/>
 
-        <!--
-             The API key for Google Maps-based APIs is defined as a string resource.
-             (See the file "res/values/google_maps_api.xml").
-             Note that the API key is linked to the encryption key used to sign the APK.
-             You need a different API key for each encryption key, including the release key that is used to
-             sign the APK for publishing.
-             You can define the keys for the debug and release targets in src/debug/ and src/release/.
-        -->
         <activity
             android:name=".app.DebugActivity"
             android:screenOrientation="portrait">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
-
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <activity android:name=".app.SettingsActivity"></activity><!-- <activity android:name=".MainActivity"> -->
-        <!-- <intent-filter> -->
-        <!-- <action android:name="android.intent.action.MAIN" /> -->
-        <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
-        <!-- </intent-filter> -->
-        <!-- </activity> -->
-        <meta-data
-            android:name="com.google.android.geo.API_KEY"
-            android:value="AIzaSyAghFlMdudCBWm76XPMZ2eE4Stl7CkD9CE" />
+        <activity android:name=".app.SettingsActivity"></activity>
     </application>
 </manifest>
\ No newline at end of file
diff --git a/drip-android-observer-master/Android/app/src/main/java/org/dripdronescanner/android/app/AircraftMapView.java b/drip-android-observer-master/Android/app/src/main/java/org/dripdronescanner/android/app/AircraftMapView.java
index b2cf3e4..1ab2223 100644
--- a/drip-android-observer-master/Android/app/src/main/java/org/dripdronescanner/android/app/AircraftMapView.java
+++ b/drip-android-observer-master/Android/app/src/main/java/org/dripdronescanner/android/app/AircraftMapView.java
@@ -3,72 +3,48 @@ package org.dripdronescanner.android.app;
 import android.Manifest;
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.util.Log;
 
 import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
 import androidx.core.content.res.ResourcesCompat;
 import androidx.fragment.app.Fragment;
-
-import org.dripdronescanner.android.R;
-import org.dripdronescanner.android.data.AircraftObject;
-import org.osmdroid.config.Configuration;
-import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
-import org.osmdroid.util.GeoPoint;
-import org.osmdroid.views.MapView;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import android.Manifest;
-import android.content.pm.PackageManager;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.util.Log;
-import android.util.Pair;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
 import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
 import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProviders;
-
-import com.google.android.gms.internal.maps.zzt;
-import com.google.android.gms.maps.CameraUpdateFactory;
-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.Polyline;
-import com.google.android.gms.maps.model.PolylineOptions;
+import androidx.lifecycle.ViewModelProvider;
 
+import org.dripdronescanner.android.R;
 import org.dripdronescanner.android.data.AircraftObject;
 import org.dripdronescanner.android.data.LocationData;
 import org.dripdronescanner.android.data.SystemData;
 import org.dripdronescanner.android.data.Util;
+
+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.Polyline;
 import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider;
 import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay;
 import org.osmdroid.views.overlay.Marker;
 
 import java.util.Collection;
+import java.util.HashMap;
 
 public class AircraftMapView extends Fragment {
-    private MapView map = null;
     private static final String TAG = "AircraftMapView";
+    private MapView map;
     private AircraftViewModel model;
+    private MyLocationNewOverlay overlay;
+
+    private static final double DESIRED_ZOOM = 17;
+    private static final int ALLOWED_ZOOM_MARGIN = 2;
+
     private final HashMap<AircraftObject, MapObserver> aircraftObservers = new HashMap<>();
-    private MyLocationNewOverlay locationOverlay;
 
     private final Util.DiffObserver<AircraftObject> allAircraftObserver = new Util.DiffObserver<AircraftObject>() {
         @Override
@@ -98,8 +74,7 @@ public class AircraftMapView extends Fragment {
     }
 
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         Context ctx = getContext();
         Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));
 
@@ -107,34 +82,29 @@ public class AircraftMapView extends Fragment {
         map = v.findViewById(R.id.map_view);
         map.setTileSource(TileSourceFactory.MAPNIK);
 
-        map.addOnFirstLayoutListener(new MapView.OnFirstLayoutListener() {
-            @Override
-            public void onFirstLayout(View v, int left, int top, int right, int bottom) {
-                if (getActivity() == null)
-                    return;
-
-                if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
-                        ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
-                    // TODO: Consider calling ActivityCompat#requestPermissions
-                    // to request the missing permissions, and then overriding
-                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
-                    //                                          int[] grantResults)
-                    // to handle the case where the user grants the permission. See the documentation
-                    // for ActivityCompat#requestPermissions for more details.
-                    Log.e("XX", "##################### can't make the right permissions");
-                    return;
-                }
+        map.addOnFirstLayoutListener((v1, left, top, right, bottom) -> {
+            if (getActivity() == null)
+                return;
 
-                locationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(getContext()), map);
-                locationOverlay.enableMyLocation();
-                locationOverlay.enableFollowLocation();
-                map.getOverlays().add(locationOverlay);
+            if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
+                    ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+                // TODO: Consider calling ActivityCompat#requestPermissions
+                // to request the missing permissions, and then overriding
+                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
+                //                                          int[] grantResults)
+                // to handle the case where the user grants the permission. See the documentation
+                // for ActivityCompat#requestPermissions for more details.
+                Log.e("XX", "##################### can't make the right permissions");
+                return;
+            }
 
-                map.setMultiTouchControls(true);
+            overlay = new MyLocationNewOverlay(new GpsMyLocationProvider(getContext()), map);
+            overlay.enableMyLocation();
+            overlay.enableFollowLocation();
+            map.getOverlays().add(overlay);
 
-                //map.getController().setCenter(new GeoPoint(58.410809, 15.621373));
-                map.getController().setZoom(DESIRED_ZOOM);
-            }
+            map.setMultiTouchControls(true);
+            map.getController().setZoom(DESIRED_ZOOM);
         });
         return v;
     }
@@ -142,21 +112,13 @@ public class AircraftMapView extends Fragment {
     @Override
     public void onResume() {
         super.onResume();
-        //this will refresh the osmdroid configuration on resuming.
-        //if you make changes to the configuration, use
-        //SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
-        //Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this));
-        map.onResume(); //needed for compass, my location overlays, v6.0.0 and up
+        map.onResume();
     }
 
     @Override
     public void onPause() {
         super.onPause();
-        //this will refresh the osmdroid configuration on resuming.
-        //if you make changes to the configuration, use
-        //SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
-        //Configuration.getInstance().save(this, prefs);
-        map.onPause();  //needed for comif (marker != null) {
+        map.onPause();
     }
 
     @Override
@@ -165,15 +127,11 @@ public class AircraftMapView extends Fragment {
         setupModel();
     }
 
-    private static final double DESIRED_ZOOM = 17;
-    private static final int ALLOWED_ZOOM_MARGIN = 2;
-
     private void setupModel() {
         if (getActivity() == null)
             return;
 
-        model = ViewModelProviders.of(getActivity()).get(AircraftViewModel.class);
-
+        model = new ViewModelProvider(this).get(AircraftViewModel.class);
         model.getAllAircraft().observe(getViewLifecycleOwner(), allAircraftObserver);
         model.getActiveAircraft().observe(getViewLifecycleOwner(), new Observer<AircraftObject>() {
             MapObserver last = null;
@@ -186,11 +144,11 @@ public class AircraftMapView extends Fragment {
                 if (observer == null)
                     return;
 
-                if (object.getLocation().getLatitude() == 0.0 && object.getLocation().getLongitude() == 0.0)
+                LocationData loc = object.getLocation();
+                if (loc.getLatitude() == 0.0 && loc.getLongitude() == 0.0)
                     return;
 
-                LatLng ll = new LatLng(object.getLocation().getLatitude(), object.getLocation().getLongitude());
-                Log.i(TAG, "centering on " + object + " at " + ll);
+                Log.i(TAG, "centering on " + object + " at " + loc.getLatitude() + " " + loc.getLongitude());
 
                 if (last != null && last.marker != null) {
                     last.marker.setAlpha(0.5f);
@@ -204,37 +162,33 @@ public class AircraftMapView extends Fragment {
 
                 last = observer;
 
-                //CameraPosition position = googleMap.getCameraPosition();
+                map.getController().animateTo(new GeoPoint(loc.getLatitude(), loc.getLongitude()));
+
                 double currentZoom = map.getZoomLevelDouble();
-                if (currentZoom < DESIRED_ZOOM - ALLOWED_ZOOM_MARGIN || currentZoom > DESIRED_ZOOM + ALLOWED_ZOOM_MARGIN) {
-                    // googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ll, DESIRED_ZOOM));
-                    //map.getController().animateTo(new GeoPoint(ll.latitude, ll.longitude));
-                } else {
-                    //map.getController().animateTo(new GeoPoint(ll.latitude, ll.longitude));
-                    //googleMap.moveCamera(CameraUpdateFactory.newLatLng(ll));
-                }
+                if (currentZoom < DESIRED_ZOOM - ALLOWED_ZOOM_MARGIN || currentZoom > DESIRED_ZOOM + ALLOWED_ZOOM_MARGIN)
+                    map.getController().setZoom(DESIRED_ZOOM);
             }
         });
     }
 
-    /*@Override
-    public boolean onMarkerClick(Marker marker) {
-
-        if (marker != null) {
-            Object tag = marker.getRelatedObject();
-            if (tag instanceof AircraftObject) {
-                model.setActiveAircraft((AircraftObject) tag);
-                return true;
+    private final Marker.OnMarkerClickListener onMarkerClick = new Marker.OnMarkerClickListener() {
+        @Override
+        public boolean onMarkerClick(Marker marker, MapView mapView) {
+            if (marker != null) {
+                Object tag = marker.getRelatedObject();
+                if (tag instanceof AircraftObject) {
+                    model.setActiveAircraft((AircraftObject) tag);
+                    return true;
+                }
             }
+            return false;
         }
-        return false;
-    }*/
+    };
 
     class MapObserver implements Observer<LocationData> {
         private Marker marker;
         private Marker markerPilot;
         private Polyline polyline;
-        private PolylineOptions polylineOptions;
 
         private final AircraftObject aircraft;
 
@@ -242,9 +196,6 @@ public class AircraftMapView extends Fragment {
             aircraft = active;
             aircraft.location.observe(AircraftMapView.this, this);
             aircraft.system.observe(AircraftMapView.this, systemObserver);
-            polylineOptions = new PolylineOptions()
-                    .color(Color.RED)
-                    .clickable(true);
         }
 
         void stop() {
@@ -259,10 +210,9 @@ public class AircraftMapView extends Fragment {
                 markerPilot = null;
             }
             if (polyline != null) {
-                //polyline.remove();
+                map.getOverlays().remove(polyline);
                 polyline = null;
             }
-            polylineOptions = null;
         }
 
         private final Observer<SystemData> systemObserver = new Observer<SystemData>() {
@@ -276,34 +226,19 @@ public class AircraftMapView extends Fragment {
                 if (sys.getOperatorLatitude() == 0.0 && sys.getOperatorLongitude() == 0.0)
                     return;
 
-                LatLng latLng = new LatLng(sys.getOperatorLatitude(), sys.getOperatorLongitude());
                 if (markerPilot == null) {
                     String id = "ID missing";
                     if (aircraft.getIdentification() != null)
                         id = aircraft.getIdentification().getUasIdAsString();
 
-                    Marker pilotMarker = new Marker(map);
-                    pilotMarker.setPosition(new GeoPoint(latLng.latitude, latLng.longitude));
-                    pilotMarker.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_airplan, null));
-                    pilotMarker.setTitle("pilot " + id);
-                    pilotMarker.setAlpha(0.5f);
-                    markerPilot = pilotMarker;
+                    markerPilot = new Marker(map);
+                    markerPilot.setPosition(new GeoPoint(sys.getOperatorLatitude(), sys.getOperatorLongitude()));
+                    markerPilot.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_airplan, null));
+                    markerPilot.setTitle("pilot " + id);
+                    markerPilot.setAlpha(0.5f);
                     markerPilot.setRelatedObject(aircraft);
-                    markerPilot.setOnMarkerClickListener(new Marker.OnMarkerClickListener() {
-                        @Override
-                        public boolean onMarkerClick(Marker marker, MapView mapView) {
-                            if (marker != null) {
-                                Object tag = marker.getRelatedObject();
-                                if (tag instanceof AircraftObject) {
-                                    model.setActiveAircraft((AircraftObject) tag);
-                                    return true;
-                                }
-                            }
-                            return false;
-                        }
-                    });
+                    markerPilot.setOnMarkerClickListener(onMarkerClick);
                 }
-                markerPilot.setPosition(new GeoPoint(latLng.latitude, latLng.longitude)); // duplicate?
                 map.getOverlays().add(markerPilot);
             }
         };
@@ -312,61 +247,40 @@ public class AircraftMapView extends Fragment {
         public void onChanged(@Nullable LocationData ignore) {
             boolean zoom = false;
             LocationData loc = aircraft.getLocation();
-            if (loc == null || map == null || polylineOptions == null)
+            if (loc == null || map == null)
                 return;
 
             // filter out zero data
             if (loc.getLatitude() == 0.0 && loc.getLongitude() == 0.0)
                 return;
 
-            LatLng latLng = new LatLng(loc.getLatitude(), loc.getLongitude());
             if (marker == null) {
                 String id = "ID missing";
                 if (aircraft.getIdentification() != null)
                     id = aircraft.getIdentification().getUasIdAsString();
 
-                Marker aircraftMarker = new Marker(map);
-                aircraftMarker.setPosition(new GeoPoint(latLng.latitude, latLng.longitude));
-                aircraftMarker.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_airplan, null));
-                aircraftMarker.setTitle("aircraft " + id);
-                aircraftMarker.setAlpha(0.5f);
-                marker = aircraftMarker;
+                marker = new Marker(map);
+                marker.setPosition(new GeoPoint(loc.getLatitude(), loc.getLongitude()));
+                marker.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_airplan, null));
+                marker.setTitle("aircraft " + id);
+                marker.setAlpha(0.5f);
                 marker.setRelatedObject(aircraft);
-                marker.setOnMarkerClickListener(new Marker.OnMarkerClickListener() {
-                    @Override
-                    public boolean onMarkerClick(Marker marker, MapView mapView) {
-                        if (marker != null) {
-                            Object tag = marker.getRelatedObject();
-                            if (tag instanceof AircraftObject) {
-                                model.setActiveAircraft((AircraftObject) tag);
-                                return true;
-                            }
-                        }
-                        return false;
-                    }
-                });
+                marker.setOnMarkerClickListener(onMarkerClick);
                 zoom = true;
             }
             map.getOverlays().add(marker);
 
-            polylineOptions.add(latLng);
             if (polyline != null) {
-                //polyline.remove(); found no equivalent method
+                map.getOverlays().remove(polyline);
                 polyline = null;
             }
-            //polyline = googleMap.addPolyline(polylineOptions);
-            polyline = new Polyline();
-            polyline.addPoint(new GeoPoint(latLng.latitude, latLng.longitude));
-            // make polyline clickable
-            // polyline.setPoints(); deprecated method
-
-            map.getOverlayManager().add(polyline);
 
+            polyline = new Polyline();
+            polyline.addPoint(new GeoPoint(loc.getLatitude(), loc.getLongitude()));
+            map.getOverlays().add(polyline);
 
-            marker.setPosition(new GeoPoint(latLng.latitude, latLng.longitude));
             if (zoom) {
-                //googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
-                map.getController().animateTo(new GeoPoint(latLng.latitude, latLng.longitude));
+                map.getController().animateTo(new GeoPoint(loc.getLatitude(), loc.getLongitude()));
             }
         }
     }
-- 
GitLab