diff --git a/app/build.gradle b/app/build.gradle index 5a09b18..dd0a15f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.uam.wmi.findmytutor" minSdkVersion 22 targetSdkVersion 27 - versionCode 14 - versionName "0.9.1-alpha" + versionCode 2 + versionName "0.9.2-alpha" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } @@ -52,7 +52,8 @@ dependencies { implementation 'com.squareup.retrofit2:converter-gson:2.4.0' implementation 'io.swagger:swagger-annotations:1.5.15' implementation 'org.threeten:threetenbp:1.3.5' - implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:6.6.5' + implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:6.7.2' + implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:4.0.0' implementation 'io.reactivex.rxjava2:rxjava:2.2.0' implementation 'com.android.support:recyclerview-v7:27.1.1' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' @@ -66,7 +67,6 @@ dependencies { implementation 'com.auth0.android:jwtdecode:1.1.1' implementation 'com.annimon:stream:1.2.1' implementation 'com.google.android.gms:play-services-location:16.0.0' - implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:4.0.0' // FloatingBarMenu implementation 'com.getbase:floatingactionbutton:1.10.1' implementation 'org.apache.commons:commons-collections4:4.0' diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java index 6629dd3..0d8b299 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java @@ -126,7 +126,6 @@ public class MapActivity extends BaseActivity selectLocationButton = findViewById(R.id.select_location_button); removeLocationButton = findViewById(R.id.remove_location_button); - Mapbox.getInstance(this, getString(R.string.access_token)); mapView = findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); @@ -638,6 +637,7 @@ public class MapActivity extends BaseActivity @Override protected int getContentViewId() { + Mapbox.getInstance(this, getString(R.string.access_token)); return R.layout.activity_map; } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/Coordinate.java b/app/src/main/java/com/uam/wmi/findmytutor/model/Coordinate.java index 4d598ff..0323cfd 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/model/Coordinate.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/Coordinate.java @@ -16,8 +16,8 @@ import io.swagger.annotations.ApiModelProperty; */ public class Coordinate extends BaseResponse { - private Range latitudeRange = Const.latitudeRange; - private Range longtitudeRange = Const.longitudeRange; + private Range latitudeRange = Const.buildingLatitudeRange; + private Range longtitudeRange = Const.buildingLongitudeRange; private List allowedApproximatedLocations = Const.validApproximatedLocations; @SerializedName("coordinateId") diff --git a/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java b/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java index ad2003d..1835496 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java @@ -26,7 +26,7 @@ public class ApiClient { private static Retrofit retrofit = null; private static int REQUEST_TIMEOUT = 60; private static OkHttpClient okHttpClient; - private static final String BASE_URL = "https://s416084.projektstudencki.pl/develop/"; + private static final String BASE_URL = "https://s416084.projektstudencki.pl/master/"; public static Retrofit getClient(Context context) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java index 715473e..3377a35 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java @@ -25,7 +25,6 @@ import android.util.Log; import com.annimon.stream.Stream; import com.google.android.gms.location.FusedLocationProviderClient; import com.google.android.gms.location.LocationServices; -import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.mapbox.geojson.Point; import com.mapbox.mapboxsdk.geometry.LatLng; import com.uam.wmi.findmytutor.model.Coordinate; @@ -33,23 +32,21 @@ import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.utils.ApproximatedLocalization; import com.uam.wmi.findmytutor.utils.MapUtils; import com.uam.wmi.findmytutor.utils.PrefUtils; -import com.uam.wmi.findmytutor.utils.RestApiHelper; import com.uam.wmi.findmytutor.utils.SharingLevel; import org.apache.commons.collections4.queue.CircularFifoQueue; import java.util.ArrayList; import java.util.List; -import java.util.TimerTask; import java.util.concurrent.atomic.AtomicReference; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.observers.DisposableSingleObserver; import io.reactivex.schedulers.Schedulers; -import okhttp3.ResponseBody; -import static com.uam.wmi.findmytutor.utils.Const.defaultBackgroundLocationInterval; +import static com.uam.wmi.findmytutor.utils.Const.offlineBackgroundLocationInterval; +import static com.uam.wmi.findmytutor.utils.Const.onlineBackgroundLocationInterval; import static com.uam.wmi.findmytutor.utils.Const.presenceApproximatedName; import static com.uam.wmi.findmytutor.utils.Const.presenceLatitude; import static com.uam.wmi.findmytutor.utils.Const.presenceLongitude; @@ -58,12 +55,12 @@ import static com.uam.wmi.findmytutor.utils.PrefUtils.storeBackgroundLocationSta public class BackgroundLocalizationService extends Service { private static final String TAG = "MyLocationService"; - private static final int LOCATION_INTERVAL = 1000; - private static final float LOCATION_DISTANCE = 5f; - private static long notify_interval = defaultBackgroundLocationInterval; - private static long notify_interval_inside_building = defaultBackgroundLocationInterval; - private static long notify_interval_outside_building = 360000; - private static int coordinatesHistoryLength = 10; + private static final float LOCATION_DISTANCE = 1f; + private static long notify_interval = onlineBackgroundLocationInterval; + private static long notify_interval_inside_building = onlineBackgroundLocationInterval; + private static long notify_interval_outside_building = offlineBackgroundLocationInterval; + private static int coordinatesHistoryLength = 5; + private static final Long LOCATION_INTERVAL = notify_interval; private Location mLastLocation; private Boolean stopService = false; private ArrayList providers = new ArrayList(); @@ -149,7 +146,7 @@ public class BackgroundLocalizationService extends Service { if (!stopService) { mStatusChecker = () -> { try { - fn_getlocation(); + getLocalizationFromListeners(); changeBackgroundMode(); } finally { mHandler.postDelayed(mStatusChecker, notify_interval); @@ -178,9 +175,8 @@ public class BackgroundLocalizationService extends Service { @RequiresApi(api = Build.VERSION_CODES.O) private void startMyOwnForeground() { - String NOTIFICATION_CHANNEL_ID = "com.example.fmt"; - String channelName = "My Background Service"; + String channelName = "FMT Background location service"; NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE); chan.setLightColor(Color.BLUE); chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); @@ -197,7 +193,7 @@ public class BackgroundLocalizationService extends Service { startForeground(2, notification); } - private void fn_getlocation() { + private void getLocalizationFromListeners() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions @@ -218,7 +214,7 @@ public class BackgroundLocalizationService extends Service { if (location != null) { mLastLocation = location; coordinatesHistory.add(location); - fn_update(location); + sendCoordinateToBackend(location); } triggerAnotherLocationListener.set(true); @@ -237,12 +233,11 @@ public class BackgroundLocalizationService extends Service { } coordinatesHistory.add(bestLocation); - Log.e("Best localization:", String.valueOf(bestLocation)); } } - private void fn_update(Location location) { + private void sendCoordinateToBackend(Location location) { new Task(location).execute(); } @@ -278,7 +273,7 @@ public class BackgroundLocalizationService extends Service { private class LocationListener implements android.location.LocationListener { - public LocationListener(String provider) { + LocationListener(String provider) { Log.e(TAG, "LocationListener " + provider); mLastLocation = new Location(provider); } @@ -328,6 +323,7 @@ public class BackgroundLocalizationService extends Service { protected Object doInBackground(Object[] objects) { String locationLevel = PrefUtils.getLocationLevel(getApplicationContext()); + String status = (PrefUtils.isStatusEnabled(getApplicationContext())) ? PrefUtils.getUserStatus(getApplicationContext()) : ""; if (locationLevel.equals(SharingLevel.PRESENCE.toString())) { latitude = presenceLatitude; @@ -350,7 +346,7 @@ public class BackgroundLocalizationService extends Service { longitude, altitude, approximatedBuildingPart, - (PrefUtils.isStatusEnabled(getApplicationContext())) ? PrefUtils.getUserStatus(getApplicationContext()) : "", + status, PrefUtils.getUserId(getApplicationContext()), locationLevel ); @@ -361,16 +357,14 @@ public class BackgroundLocalizationService extends Service { .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSingleObserver() { - @SuppressLint("LongLogTag") @Override - public void onSuccess(Coordinate coord) { - Log.e("CoordinateService onSuccess", String.valueOf(coord)); + public void onSuccess(Coordinate coordinate) { + Log.e(TAG, String.valueOf(coordinate)); } - @SuppressLint("LongLogTag") @Override public void onError(Throwable e) { - Log.e("CoordinateService onError", e.getMessage()); + Log.e(TAG, e.getMessage()); } })); } catch (IllegalArgumentException e) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java index fa92616..6a4282a 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java @@ -6,13 +6,17 @@ import java.util.Arrays; import java.util.List; public class Const { - public final static Integer defaultBackgroundLocationInterval = 15000; + public final static Integer onlineBackgroundLocationInterval = 15000; + public final static Integer offlineBackgroundLocationInterval = 36000; public final static Integer defaultMapZoom = 17; public final static Integer searchMapZoom = 13; public final static Double presenceLatitude = 52.466365; public final static Double presenceLongitude = 16.926792; public final static String presenceApproximatedName = "Unknown"; - public final static Range latitudeRange = Range.create(52.466092, 52.467529); - public final static Range longitudeRange = Range.create(16.926159, 16.927759); + public final static Range buildingLatitudeRange = Range.create(52.466092, 52.467529); + public final static Range buildingLongitudeRange = Range.create(16.926159, 16.927759); + public final static Range outsideLatitudeRange = Range.create(52.463512, 52.468837); + public final static Range outsideLongitudeRange = Range.create(16.922372, 16.936004); public final static List validApproximatedLocations = Arrays.asList("Skrzydło B", "Skrzydło A", "Aule", "Łącznik", "Biblioteka", "Hol", "Unknown"); } + diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/MapUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/MapUtils.java index b63cf5f..3164e2b 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/MapUtils.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/MapUtils.java @@ -14,8 +14,8 @@ import com.mapbox.mapboxsdk.maps.MapboxMap; import java.io.IOException; import java.io.InputStream; -import static com.uam.wmi.findmytutor.utils.Const.latitudeRange; -import static com.uam.wmi.findmytutor.utils.Const.longitudeRange; +import static com.uam.wmi.findmytutor.utils.Const.outsideLongitudeRange; +import static com.uam.wmi.findmytutor.utils.Const.outsideLatitudeRange; public class MapUtils { @@ -59,7 +59,6 @@ public class MapUtils { // read file to JSON public static String loadJsonFromAsset(Context context, String filename) { - // Using this method to load in GeoJSON files from the assets folder. try { InputStream is = context.getAssets().open(filename); int size = is.available(); @@ -75,7 +74,7 @@ public class MapUtils { } public static Boolean checkIfCoordinateIsValid(Location coordinate){ - return latitudeRange.contains(coordinate.getLatitude()) && longitudeRange.contains(coordinate.getLongitude()); + return outsideLatitudeRange.contains(coordinate.getLatitude()) && outsideLongitudeRange.contains(coordinate.getLongitude()); } // Function for marker animation diff --git a/app/src/main/res/layout/pref_main.xml b/app/src/main/res/layout/pref_main.xml index 131685a..2977f17 100644 --- a/app/src/main/res/layout/pref_main.xml +++ b/app/src/main/res/layout/pref_main.xml @@ -15,5 +15,12 @@ android:summary="%s" android:title="@string/title_language" /> + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1a1605b..70b2d71 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -234,9 +234,12 @@ Error handling status fetch Error handling status fetch + Auto reporting on issue is OFF + Auto reporting on issue is ON + ACRA reporting tool Sorry, the application crashed. A report will be sent to the developers Sorry, the application crashed. A report will be sent to the developers - FMT Crash + FMT Issue FMT Lack information about duty hours No note.