diff --git a/app/build.gradle b/app/build.gradle index 07beea8633d0142af6b92822233c12b3355161bc..f5ca2861500824836f4a2e73ab4b23ff3eba185b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -36,4 +36,5 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation 'com.google.android.material:material:1.1.0' + implementation 'com.google.android.gms:play-services-location:17.0.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8222f44eda5ce20ca354f7da6dbc44412a174b8a..29171d2ac1e9ded2c627bc33d9a15a8bad892613 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.itstall.freifunkfranken"> + <!-- The ACCESS_COARSE/FINE_LOCATION permissions are not required to use Google Maps Android API v2, but you must specify either coarse or fine @@ -19,6 +20,11 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> + <service + android:name=".LocationService" + android:enabled="true" + android:exported="true"></service> + <activity android:name=".view.AboutActivity" /> <activity android:name=".view.SettingsActivity" /> <!-- diff --git a/app/src/main/java/de/itstall/freifunkfranken/controller/MainActivityListener.java b/app/src/main/java/de/itstall/freifunkfranken/controller/MainActivityListener.java deleted file mode 100644 index d7dfbb7ec9521398908e94eed239b49736358329..0000000000000000000000000000000000000000 --- a/app/src/main/java/de/itstall/freifunkfranken/controller/MainActivityListener.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.itstall.freifunkfranken.controller; - -import android.view.View; - -import de.itstall.freifunkfranken.R; - -public class MainActivityListener implements View.OnClickListener { - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.AboutBtnClose: - break; - case R.id.SettingsBtnClose: - break; - } - } -} diff --git a/app/src/main/java/de/itstall/freifunkfranken/controller/MyLocationListener.java b/app/src/main/java/de/itstall/freifunkfranken/controller/MyLocationListener.java index ac6580b08349e73318fad8bf2e8c944c1a1245ef..96201ccaba3ea1e407cdbfdaf4e0d823fa0b902c 100644 --- a/app/src/main/java/de/itstall/freifunkfranken/controller/MyLocationListener.java +++ b/app/src/main/java/de/itstall/freifunkfranken/controller/MyLocationListener.java @@ -36,6 +36,7 @@ public class MyLocationListener { && ActivityCompat.checkSelfPermission(mainActivity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mainActivity, Manifest.permission.ACCESS_NETWORK_STATE) != PackageManager.PERMISSION_GRANTED) { } + ActivityCompat.requestPermissions(mainActivity, new String[] { Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_NETWORK_STATE }, 1); try { gps_loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); @@ -57,7 +58,6 @@ public class MyLocationListener { longitude = 0.0; } - ActivityCompat.requestPermissions(mainActivity, new String[] { Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_NETWORK_STATE }, 1); //locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); //locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocationListener); diff --git a/app/src/main/java/de/itstall/freifunkfranken/model/RequestAps.java b/app/src/main/java/de/itstall/freifunkfranken/controller/RequestAps.java similarity index 85% rename from app/src/main/java/de/itstall/freifunkfranken/model/RequestAps.java rename to app/src/main/java/de/itstall/freifunkfranken/controller/RequestAps.java index 9417def38a5d3f32a4d6cbb7e576d81286e0da28..c804304ae8763b06732289f696c47237e0c71eed 100644 --- a/app/src/main/java/de/itstall/freifunkfranken/model/RequestAps.java +++ b/app/src/main/java/de/itstall/freifunkfranken/controller/RequestAps.java @@ -1,4 +1,4 @@ -package de.itstall.freifunkfranken.model; +package de.itstall.freifunkfranken.controller; import android.content.Context; import android.util.Log; @@ -16,6 +16,8 @@ import java.util.Comparator; import java.util.List; import java.util.Objects; +import de.itstall.freifunkfranken.model.AccessPoint; + public class RequestAps { private List<AccessPoint> accessPointList = new ArrayList<>(); @@ -57,17 +59,23 @@ public class RequestAps { } } - public List<AccessPoint> getSortedList(boolean showOffline) { + public List<AccessPoint> getSortedList(boolean showOffline, int routerCount) { List<AccessPoint> newList = new ArrayList<>(); + int counter = 0; for (AccessPoint ap : accessPointList) { if(showOffline) { //float distance = NextApFragment.myLocationListener.myLocation.distanceTo(ap.getLocation()) / 1000; //ap.setDistance((int) distance / 1000); newList.add(ap); + counter++; } else { - if(ap.isOnline()) newList.add(ap); + if(ap.isOnline()) { + newList.add(ap); + counter++; + } } + if(routerCount > 0 && counter == routerCount) break; } Collections.sort(newList, new Comparator<AccessPoint>() { diff --git a/app/src/main/java/de/itstall/freifunkfranken/model/RequestSsids.java b/app/src/main/java/de/itstall/freifunkfranken/controller/RequestSsids.java similarity index 95% rename from app/src/main/java/de/itstall/freifunkfranken/model/RequestSsids.java rename to app/src/main/java/de/itstall/freifunkfranken/controller/RequestSsids.java index 0ca940859262dccbe068c115c9ec287a88b2fc9d..62efd11beaa103c9a359252d3bda7f791a85408b 100644 --- a/app/src/main/java/de/itstall/freifunkfranken/model/RequestSsids.java +++ b/app/src/main/java/de/itstall/freifunkfranken/controller/RequestSsids.java @@ -1,4 +1,4 @@ -package de.itstall.freifunkfranken.model; +package de.itstall.freifunkfranken.controller; import android.app.ProgressDialog; import android.content.Context; @@ -25,6 +25,7 @@ import java.util.List; import java.util.Objects; import de.itstall.freifunkfranken.controller.SsidsAdapter; +import de.itstall.freifunkfranken.model.Ssid; public class RequestSsids { private List<Ssid> ssidList = new ArrayList<>(); diff --git a/app/src/main/java/de/itstall/freifunkfranken/view/MainActivity.java b/app/src/main/java/de/itstall/freifunkfranken/view/MainActivity.java index 20adf5109edd0beef27d3f0813b9e04ee0166880..4596c03e6a3e4af6382a22fc94ef68974751fcf7 100644 --- a/app/src/main/java/de/itstall/freifunkfranken/view/MainActivity.java +++ b/app/src/main/java/de/itstall/freifunkfranken/view/MainActivity.java @@ -1,11 +1,11 @@ package de.itstall.freifunkfranken.view; import android.content.Intent; +import android.location.Location; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; @@ -18,15 +18,12 @@ import java.util.Objects; import de.itstall.freifunkfranken.R; import de.itstall.freifunkfranken.controller.FileDownloader; -import de.itstall.freifunkfranken.controller.MyLocationListener; public class MainActivity extends AppCompatActivity { public Fragment fragment = null; public boolean downloadDone = false; TabLayout tabLayout; - MyLocationListener myLocationListener; - Button btnAboutClose; - //MainActivityListener mainActivityListener; + public static Location myLocation; @Override protected void onCreate(Bundle savedInstanceState) { @@ -71,10 +68,6 @@ public class MainActivity extends AppCompatActivity { } }); - - //btnAboutClose = findViewById(R.id.AboutBtnClose); - //btnAboutClose.setOnClickListener(mainActivityListener); - downloadFiles(); } @@ -110,8 +103,6 @@ public class MainActivity extends AppCompatActivity { fragmentTransaction.replace(R.id.frameLayout, fragment); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); fragmentTransaction.commit(); - //myLocationListener = new MyLocationListener(this); - //myLocationListener.getLocation(); } @Override 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 242bee597e52c82984aacf9dbae8698d6eb8c673..c8a6d7c5047756cc78d3799f6fbfa129912b6864 100644 --- a/app/src/main/java/de/itstall/freifunkfranken/view/MapsFragment.java +++ b/app/src/main/java/de/itstall/freifunkfranken/view/MapsFragment.java @@ -11,7 +11,6 @@ import androidx.fragment.app.Fragment; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; -import com.google.android.gms.maps.MapFragment; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.BitmapDescriptorFactory; @@ -22,9 +21,8 @@ import java.util.List; import java.util.Objects; import de.itstall.freifunkfranken.R; -import de.itstall.freifunkfranken.controller.MyLocationListener; import de.itstall.freifunkfranken.model.AccessPoint; -import de.itstall.freifunkfranken.model.RequestAps; +import de.itstall.freifunkfranken.controller.RequestAps; public class MapsFragment extends Fragment implements OnMapReadyCallback { private static final String TAG = MapsFragment.class.getSimpleName(); @@ -70,7 +68,7 @@ public class MapsFragment extends Fragment implements OnMapReadyCallback { } private void showApsOnMap() { - List<AccessPoint> accessPointList = new RequestAps(Objects.requireNonNull(this.getContext())).getSortedList(sharedPreferences.getBoolean("MapOfflineRouter", false)); + 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()); diff --git a/app/src/main/java/de/itstall/freifunkfranken/view/NextApFragment.java b/app/src/main/java/de/itstall/freifunkfranken/view/NextApFragment.java index 7c3bb8ffab7d6ae92619045fb8a527013eb2f54b..1dcab1845cc6ba5e8c003de9b6c645c70e1dbfef 100644 --- a/app/src/main/java/de/itstall/freifunkfranken/view/NextApFragment.java +++ b/app/src/main/java/de/itstall/freifunkfranken/view/NextApFragment.java @@ -16,10 +16,9 @@ import java.util.List; import java.util.Objects; import de.itstall.freifunkfranken.R; -import de.itstall.freifunkfranken.controller.MyLocationListener; import de.itstall.freifunkfranken.controller.NextApAdapter; import de.itstall.freifunkfranken.model.AccessPoint; -import de.itstall.freifunkfranken.model.RequestAps; +import de.itstall.freifunkfranken.controller.RequestAps; public class NextApFragment extends Fragment { private RecyclerView rvAps; @@ -43,7 +42,7 @@ public class NextApFragment extends Fragment { rvAps.setLayoutManager(new LinearLayoutManager(getActivity())); tvTemp = rootView.findViewById(R.id.tvTemp); - List<AccessPoint> accessPointList = new RequestAps(Objects.requireNonNull(this.getContext())).getSortedList(sharedPreferences.getBoolean("OfflineRouter", false)); + List<AccessPoint> accessPointList = new RequestAps(Objects.requireNonNull(this.getContext())).getSortedList(sharedPreferences.getBoolean("OfflineRouter", false), sharedPreferences.getInt("RouterCount", 10)); showApList(accessPointList); return rootView; diff --git a/app/src/main/java/de/itstall/freifunkfranken/view/SsidsFragment.java b/app/src/main/java/de/itstall/freifunkfranken/view/SsidsFragment.java index 5c5b33d41e2189b6db83dd5aa703e9d5f977618f..419965c40e1092ca7b73f6ef5a7db91054a09de6 100644 --- a/app/src/main/java/de/itstall/freifunkfranken/view/SsidsFragment.java +++ b/app/src/main/java/de/itstall/freifunkfranken/view/SsidsFragment.java @@ -13,9 +13,8 @@ import java.util.List; import java.util.Objects; import de.itstall.freifunkfranken.R; -import de.itstall.freifunkfranken.controller.NextApAdapter; import de.itstall.freifunkfranken.controller.SsidsAdapter; -import de.itstall.freifunkfranken.model.RequestSsids; +import de.itstall.freifunkfranken.controller.RequestSsids; import de.itstall.freifunkfranken.model.Ssid; public class SsidsFragment extends androidx.fragment.app.Fragment {