diff --git a/.idea/misc.xml b/.idea/misc.xml index b0c7b20..dc44dda 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,7 +29,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0e3ec54..f053e5e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { applicationId "com.uam.wmi.findmytutor" minSdkVersion 22 targetSdkVersion 27 - versionCode 14 + versionCode 15 versionName "0.9.1-alpha" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true @@ -28,8 +28,14 @@ repositories { url 'http://dl.bintray.com/amulyakhare/maven' } } +def acraVersion = '5.2.1' dependencies { + implementation "ch.acra:acra-http:$acraVersion" + implementation "ch.acra:acra-toast:$acraVersion" + implementation "ch.acra:acra-notification:$acraVersion" + + implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:preference-v7:27.1.1' implementation 'com.android.support:appcompat-v7:27.1.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2477479..80031db 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,6 +17,7 @@ + android:theme="@style/AppTheme"/> \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/FindMyTutor.java b/app/src/main/java/com/uam/wmi/findmytutor/FindMyTutor.java new file mode 100644 index 0000000..763c4b5 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/FindMyTutor.java @@ -0,0 +1,75 @@ +package com.uam.wmi.findmytutor; + +import android.app.Application; +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Configuration; + +import static org.acra.ReportField.*; +import org.acra.ACRA; +import org.acra.annotation.AcraNotification; +import org.acra.config.CoreConfigurationBuilder; +import org.acra.config.HttpSenderConfigurationBuilder; +import org.acra.config.ToastConfigurationBuilder; +import org.acra.data.StringFormat; +import org.acra.sender.HttpSender; +import java.util.HashMap; +import java.util.Map; + + +@AcraNotification(resText = R.string.notification_text, + resTitle = R.string.notification_title, + resChannelName = R.string.notification_channel) +public class FindMyTutor extends Application { + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + + // ACRA core + CoreConfigurationBuilder builder = new CoreConfigurationBuilder(this) + .setBuildConfigClass(BuildConfig.class) + .setReportContent(REPORT_ID, PHONE_MODEL, LOGCAT, USER_APP_START_DATE, USER_CRASH_DATE, SHARED_PREFERENCES, + ANDROID_VERSION, STACK_TRACE, CUSTOM_DATA, BUILD_CONFIG) + .setReportFormat(StringFormat.JSON); + + // Toast for user + builder.setBuildConfigClass(BuildConfig.class) + .setReportFormat(StringFormat.JSON); + builder.getPluginConfigurationBuilder( + ToastConfigurationBuilder.class + ).setResText(R.string.acra_toast_text); + + SharedPreferences sharedPreferences = base.getSharedPreferences("com.uam.wmi.findmytutor_preferences", Context.MODE_PRIVATE); + Map header = new HashMap(); + String token = sharedPreferences.getString("API_KEY", "KEY_EMPTY"); + header.put("Authorization","Bearer " + token); + + // Api POST + builder.getPluginConfigurationBuilder( + HttpSenderConfigurationBuilder.class +// ).setUri("http://192.168.0.15:3000/api/acra") + ).setUri("https://s416084.projektstudencki.pl/develop/api/Feedback/autoFeedback") + .setHttpMethod(HttpSender.Method.POST) + .setHttpHeaders(header) + .setEnabled(true); + + ACRA.init(this, builder); + //Shared preferences + ACRA.getErrorReporter().putCustomData("USER_ID", sharedPreferences.getString("USER_ID", "no user id")); + } + + // Called by the system when the device configuration changes while your component is running. + // Overriding this method is totally optional! + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + } + + // This is called when the overall system is running low on memory, + // and would like actively running processes to tighten their belts. + // Overriding this method is totally optional! + @Override + public void onLowMemory() { + super.onLowMemory(); + } +} diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java index 3209b11..5be8ec4 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java @@ -20,19 +20,16 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; -import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; import android.widget.Toast; -import com.mapbox.mapboxsdk.Mapbox; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.service.BackgroundLocalizationService; import com.uam.wmi.findmytutor.utils.ActiveFragment; import com.uam.wmi.findmytutor.utils.FeedbackUtils; -import com.uam.wmi.findmytutor.utils.MapUtils; import com.uam.wmi.findmytutor.utils.PrefUtils; import com.uam.wmi.findmytutor.utils.RxSearchObservable; @@ -49,8 +46,8 @@ import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; -import static com.uam.wmi.findmytutor.utils.Consts.deafultMapZoom; -import static com.uam.wmi.findmytutor.utils.Consts.searchMapZoom; +import static com.uam.wmi.findmytutor.utils.Const.defaultMapZoom; +import static com.uam.wmi.findmytutor.utils.Const.searchMapZoom; import static com.uam.wmi.findmytutor.utils.PrefUtils.storeBackgroundLocationStatus; @@ -77,6 +74,7 @@ public abstract class BaseActivity private Fragment userListFragment; private ActiveFragment activeFragment = ActiveFragment.NONE; + private Fragment activeBottomMenu = null; private SearchView searchView; @SuppressLint("CheckResult") @@ -275,7 +273,7 @@ public abstract class BaseActivity searchView.setOnQueryTextFocusChangeListener((v, hasFocus) -> { if (!hasFocus && activeFragment.equals(ActiveFragment.NONE)) { restoreMapMarkers(); - adjustMapToSearch(deafultMapZoom); + adjustMapToSearch(defaultMapZoom); } if(hasFocus && activeFragment.equals(ActiveFragment.NONE)){ @@ -351,7 +349,7 @@ public abstract class BaseActivity } else if (itemId == R.id.nav_user_list) { loadUserListFragment(); } - + selectBottomNavigationBarItem(itemId); }, 300); return true; @@ -363,6 +361,7 @@ public abstract class BaseActivity FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.activity_content, sharingFragment); ft.commit(); + } private void loadUserListFragment() { @@ -372,8 +371,8 @@ public abstract class BaseActivity FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.activity_content, userListFragment); ft.commit(); - } + } private void updateNavigationBarState() { int actionId = getNavigationMenuItemId(); @@ -385,9 +384,6 @@ public abstract class BaseActivity item.setChecked(true); } - - abstract int getNavigationMenuItemId(); - abstract int getContentViewId(); } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java index a7dd423..7734dd1 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java @@ -21,7 +21,6 @@ import com.auth0.android.jwt.JWT; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.model.JwtToken; -import com.uam.wmi.findmytutor.model.LdapUser; import com.uam.wmi.findmytutor.model.User; import com.uam.wmi.findmytutor.model.ValidateUser; import com.uam.wmi.findmytutor.network.ApiClient; 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 8e89d40..d98fa2f 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 @@ -49,10 +49,10 @@ import com.uam.wmi.findmytutor.service.UserService; import com.uam.wmi.findmytutor.utils.ApproximatedLocalization; import com.uam.wmi.findmytutor.utils.ManualLocationUtils; import com.uam.wmi.findmytutor.utils.MapMarker; +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 com.uam.wmi.findmytutor.utils.MapUtils; import java.util.ArrayList; import java.util.HashMap; @@ -80,8 +80,6 @@ public class MapActivity extends BaseActivity private int mInterval = 10000; private Handler mHandler = new Handler(); private Runnable mStatusChecker; - private Handler manualLocHandler = new Handler(); - private Runnable manualLocStatusChecker; private MapView mapView; private MapboxMap mapboxMap; private Button selectLocationButton; @@ -100,6 +98,7 @@ public class MapActivity extends BaseActivity private String myId; private boolean isTutor; private ApproximatedLocalization approximatedLocalization; + private boolean shouldFetchNewCoords = true; @Override protected void onCreate(Bundle savedInstanceState) { @@ -115,7 +114,9 @@ public class MapActivity extends BaseActivity mStatusChecker = () -> { try { - fetchTopCoords(); + if (shouldFetchNewCoords) { + fetchTopCoords(); + } } finally { mHandler.postDelayed(mStatusChecker, mInterval); } @@ -226,7 +227,7 @@ public class MapActivity extends BaseActivity private void showError(Throwable e) { String message; - Log.e("ERR",e.toString()); + Log.e("ERR", e.toString()); if (e instanceof HttpException) { ResponseBody responseBody = ((HttpException) e).response().errorBody(); @@ -343,7 +344,6 @@ public class MapActivity extends BaseActivity }); }); - alertDialog.show(); } @@ -372,7 +372,7 @@ public class MapActivity extends BaseActivity private void SaveCurrentManualLocation(PredefinedCoordViewModel resp) { Toast.makeText(getApplicationContext(), R.string.location_saved, Toast.LENGTH_SHORT).show(); - PrefUtils.putCurrentManualLocation(getApplicationContext(),resp.getPredefinedCoordinateId()); + PrefUtils.putCurrentManualLocation(getApplicationContext(), resp.getPredefinedCoordinateId()); } private void fetchTopCoords() { @@ -389,7 +389,7 @@ public class MapActivity extends BaseActivity public void onSuccess(List coordsList) { if (tmpLocalMarker != null && coordsList.isEmpty()) { - Timber.e("200 empty []"); + Log.e("MapActivity", "200 empty []"); mapboxMap.clear(); } @@ -439,7 +439,7 @@ public class MapActivity extends BaseActivity } LatLng toDestination = new LatLng(element.getLatitude(), element.getLongitude()); -// TODO fix flickiering markers + ValueAnimator markerAnimator = ObjectAnimator.ofObject(marker, "position", new MapUtils.LatLngEvaluator(), marker.getPosition(), @@ -592,6 +592,7 @@ public class MapActivity extends BaseActivity public void onResume() { super.onResume(); mapView.onResume(); + shouldFetchNewCoords = true; } @Override @@ -604,12 +605,14 @@ public class MapActivity extends BaseActivity protected void onStop() { super.onStop(); mapView.onStop(); + shouldFetchNewCoords = false; } @Override public void onPause() { super.onPause(); mapView.onPause(); + shouldFetchNewCoords = false; } @Override @@ -623,8 +626,6 @@ public class MapActivity extends BaseActivity super.onDestroy(); mapView.onDestroy(); mHandler.removeCallbacks(mStatusChecker); - // TODO remove after BG sending - manualLocHandler.removeCallbacks(manualLocStatusChecker); disposable.dispose(); } @@ -723,6 +724,6 @@ public class MapActivity extends BaseActivity } public void adjustMapToSearch(Integer zoom) { - MapUtils.setZoom(mapboxMap,zoom); + MapUtils.setZoom(mapboxMap, zoom); } } 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 9fc2acf..4d598ff 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 @@ -3,7 +3,9 @@ package com.uam.wmi.findmytutor.model; import android.util.Range; import com.google.gson.annotations.SerializedName; +import com.uam.wmi.findmytutor.utils.Const; +import java.util.List; import java.util.Objects; import java.util.UUID; @@ -14,8 +16,9 @@ import io.swagger.annotations.ApiModelProperty; */ public class Coordinate extends BaseResponse { - Range latitudeRange = Range.create(52.46598, 52.467545); - Range longtitudeRange = Range.create(16.926099, 16.927794); + private Range latitudeRange = Const.latitudeRange; + private Range longtitudeRange = Const.longitudeRange; + private List allowedApproximatedLocations = Const.validApproximatedLocations; @SerializedName("coordinateId") private UUID coordinateId = null; @@ -47,7 +50,7 @@ public class Coordinate extends BaseResponse { public Coordinate (Double latitude, Double longitude, Double altitude, String approximatedLocation, String label, String userId, String displayMode) { if (!latitudeRange.contains(latitude)) throw new IllegalArgumentException("Inappropriate latitude value" + latitude); if (!longtitudeRange.contains(longitude)) throw new IllegalArgumentException("Inappropriate longitude value" + longitude); - //if (approximatedLocation == null) throw new IllegalArgumentException("Inappropriate approximatedLocation"); + if (!allowedApproximatedLocations.contains(approximatedLocation)) throw new IllegalArgumentException("Inappropriate approximatedLocation"); this.latitude = latitude; this.longitude = longitude; 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 0673250..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 @@ -23,26 +23,27 @@ import retrofit2.converter.gson.GsonConverterFactory; 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/master/"; + 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/master/"; - public static Retrofit getClient(Context context) { + public static Retrofit getClient(Context context) { - if (okHttpClient == null) - initOkHttp(context); + if (okHttpClient == null) + initOkHttp(context); - if (retrofit == null) { - retrofit = new Retrofit.Builder() - .baseUrl(BASE_URL) - .client(okHttpClient) - .addConverterFactory(GsonConverterFactory.create()) - .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) - .build(); + if (retrofit == null) { + retrofit = new Retrofit.Builder() + .baseUrl(BASE_URL) + .client(okHttpClient) + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .build(); + } + + return retrofit; } - return retrofit; - } private static void initOkHttp(final 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 810661c..715473e 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 @@ -16,13 +16,13 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.os.HandlerThread; import android.os.IBinder; import android.support.annotation.RequiresApi; import android.support.v4.app.ActivityCompat; import android.support.v4.app.NotificationCompat; 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; @@ -31,25 +31,28 @@ import com.mapbox.mapboxsdk.geometry.LatLng; import com.uam.wmi.findmytutor.model.Coordinate; 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 com.uam.wmi.findmytutor.utils.MapUtils; + +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 timber.log.Timber; -import static com.uam.wmi.findmytutor.utils.Consts.presenceApproximatedName; -import static com.uam.wmi.findmytutor.utils.Consts.presenceLatitude; -import static com.uam.wmi.findmytutor.utils.Consts.presenceLongitude; +import static com.uam.wmi.findmytutor.utils.Const.defaultBackgroundLocationInterval; +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; import static com.uam.wmi.findmytutor.utils.PrefUtils.storeBackgroundLocationStatus; public class BackgroundLocalizationService extends Service { @@ -57,21 +60,20 @@ 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; - public static String str_receiver = "background.location.broadcast"; - private static long notify_interval = 10000; - Location mLastLocation; - Boolean stopService = false; - Intent intent; - ArrayList providers = new ArrayList(); - LocationListener[] mLocationListeners; - + 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 Location mLastLocation; + private Boolean stopService = false; + private ArrayList providers = new ArrayList(); + private LocationListener[] mLocationListeners; + private CircularFifoQueue coordinatesHistory = new CircularFifoQueue(coordinatesHistoryLength); private LocationManager mLocationManager = null; private Handler mHandler = new Handler(); - private HandlerThread mHandlerThread = null; private Runnable mStatusChecker; private FusedLocationProviderClient mFusedLocationClient; - public BackgroundLocalizationService() { providers.add(LocationManager.GPS_PROVIDER); providers.add(LocationManager.NETWORK_PROVIDER); @@ -82,7 +84,6 @@ public class BackgroundLocalizationService extends Service { new LocationListener(LocationManager.NETWORK_PROVIDER), new LocationListener(LocationManager.PASSIVE_PROVIDER) }; - } @Override @@ -146,27 +147,39 @@ public class BackgroundLocalizationService extends Service { } if (!stopService) { - - mStatusChecker = () -> { try { fn_getlocation(); + changeBackgroundMode(); } finally { mHandler.postDelayed(mStatusChecker, notify_interval); } }; AsyncTask.execute(mStatusChecker); - } + } + private void changeBackgroundMode() { + if (coordinatesHistory.size() > 4) { + Boolean shouldExtendTimeInterval = Stream.of(coordinatesHistory) + .map(MapUtils::checkIfCoordinateIsValid).takeWhile(s -> !s).toList().size() == coordinatesHistory.size(); + Boolean shouldAbbreviateTimeInterval = Stream.of(coordinatesHistory). + map(MapUtils::checkIfCoordinateIsValid).toList().get(coordinatesHistory.size() - 1); + + if (shouldExtendTimeInterval) { + notify_interval = notify_interval_outside_building; + } else if (shouldAbbreviateTimeInterval) { + notify_interval = notify_interval_inside_building; + } + } } @RequiresApi(api = Build.VERSION_CODES.O) private void startMyOwnForeground() { - String NOTIFICATION_CHANNEL_ID = "com.example.simpleapp"; + String NOTIFICATION_CHANNEL_ID = "com.example.fmt"; String channelName = "My Background Service"; NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE); chan.setLightColor(Color.BLUE); @@ -198,29 +211,35 @@ public class BackgroundLocalizationService extends Service { List providers1 = mLocationManager.getProviders(true); Location bestLocation = null; - - - for (String provider : providers1) { - Location location = mLocationManager.getLastKnownLocation(provider); - - if (location == null) { - continue; - } - if (bestLocation == null || location.getAccuracy() < bestLocation.getAccuracy()) { - bestLocation = location; - } - - } - - Log.e("Best localization:", String.valueOf(bestLocation)); + AtomicReference triggerAnotherLocationListener = new AtomicReference<>(false); mFusedLocationClient.getLastLocation().addOnSuccessListener( location -> { if (location != null) { mLastLocation = location; + coordinatesHistory.add(location); fn_update(location); } + + triggerAnotherLocationListener.set(true); }); + + if (triggerAnotherLocationListener.get()) { + for (String provider : providers1) { + Location location = mLocationManager.getLastKnownLocation(provider); + + if (location == null) { + continue; + } + if (bestLocation == null || location.getAccuracy() < bestLocation.getAccuracy()) { + bestLocation = location; + } + } + + coordinatesHistory.add(bestLocation); + Log.e("Best localization:", String.valueOf(bestLocation)); + } + } private void fn_update(Location location) { @@ -241,7 +260,6 @@ public class BackgroundLocalizationService extends Service { return; } mLocationManager.removeUpdates(listener); - Log.i(TAG, "Removed"); } catch (Exception ex) { Log.i(TAG, "fail to remove location listener, ignore", ex); @@ -257,14 +275,7 @@ public class BackgroundLocalizationService extends Service { mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE); } } - - private class TimerTaskToGetLocation extends TimerTask { - @Override - public void run() { - mHandler.post(BackgroundLocalizationService.this::fn_getlocation); - } - } - + private class LocationListener implements android.location.LocationListener { public LocationListener(String provider) { @@ -344,9 +355,6 @@ public class BackgroundLocalizationService extends Service { locationLevel ); - Log.e(TAG, String.valueOf(coordinate)); - - disposable.add( coordinateService .postCoordinate(coordinate) @@ -362,17 +370,11 @@ public class BackgroundLocalizationService extends Service { @SuppressLint("LongLogTag") @Override public void onError(Throwable e) { - Log.e("CoordinateService onError", e.getMessage()); - - if (e instanceof HttpException) { - ResponseBody responseBody = ((HttpException) e).response().errorBody(); - Log.e("CoordinateService onError", RestApiHelper.getErrorMessage(responseBody)); - } } })); } catch (IllegalArgumentException e) { - Log.e(TAG,e.toString()); + Log.e(TAG, e.toString()); } return null; diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/ApproximatedLocalization.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/ApproximatedLocalization.java index 4a42bf3..83f26fc 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/ApproximatedLocalization.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/ApproximatedLocalization.java @@ -48,7 +48,7 @@ public class ApproximatedLocalization { return Objects.requireNonNull(Objects.requireNonNull(feature.getStringProperty("name"))); } - return null; + return Const.presenceApproximatedName; } public List getMiddlePointOfBuildingPart(String buildingPart) { 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 new file mode 100644 index 0000000..fa92616 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java @@ -0,0 +1,18 @@ +package com.uam.wmi.findmytutor.utils; + +import android.util.Range; + +import java.util.Arrays; +import java.util.List; + +public class Const { + public final static Integer defaultBackgroundLocationInterval = 15000; + 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 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/Consts.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/Consts.java deleted file mode 100644 index f866a7f..0000000 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/Consts.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.uam.wmi.findmytutor.utils; - -import android.util.Range; - -public class Consts { - public final static Integer deafultMapZoom = 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.466709, 52.467007); - public final static Range longtitudeRange = Range.create(16.926159, 16.926976); -} diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/ManualLocationUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/ManualLocationUtils.java index 6de0208..abb59f4 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/ManualLocationUtils.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/ManualLocationUtils.java @@ -44,8 +44,6 @@ public class ManualLocationUtils { activityContext = context; } - - private void handleError(Throwable error) { if (error instanceof HttpException) { 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 c75b338..b63cf5f 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 @@ -2,30 +2,20 @@ package com.uam.wmi.findmytutor.utils; import android.animation.TypeEvaluator; import android.content.Context; -import android.graphics.Color; import android.location.Location; -import android.view.Gravity; -import android.view.View; -import android.widget.FrameLayout; -import android.content.res.AssetManager; -import com.mapbox.mapboxsdk.annotations.Polygon; -import com.mapbox.mapboxsdk.annotations.PolygonOptions; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.style.layers.FillLayer; -import com.mapbox.mapboxsdk.style.layers.Layer; -import com.uam.wmi.findmytutor.model.Coordinate; import java.io.IOException; import java.io.InputStream; -import static com.uam.wmi.findmytutor.utils.Consts.latitudeRange; -import static com.uam.wmi.findmytutor.utils.Consts.longtitudeRange; +import static com.uam.wmi.findmytutor.utils.Const.latitudeRange; +import static com.uam.wmi.findmytutor.utils.Const.longitudeRange; public class MapUtils { @@ -85,7 +75,7 @@ public class MapUtils { } public static Boolean checkIfCoordinateIsValid(Location coordinate){ - return (!latitudeRange.contains(coordinate.getLatitude()) && !longtitudeRange.contains(coordinate.getLongitude())); + return latitudeRange.contains(coordinate.getLatitude()) && longitudeRange.contains(coordinate.getLongitude()); } // Function for marker animation diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index b5db5f1..db10ac8 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -159,9 +159,14 @@ Błąd sieci! Błąd podczas pobierania danych. Błąd podczas pobierania statusów. + Upss. Coś poszło nie tak. Pracujemy nad tym! Brak informacji o dyzurze. Brak notatki. Wyszukiwarka + Nie przeszkadzać + Czekam na studentów + Na wakacjach + Status diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd25c3a..1a1605b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -73,11 +73,16 @@ key_location_level Choose status - key_status_value + key_status_value Status Busy Available Consultation + Do not disturb + Waiting for students + On holidays + + Status Add custom status @@ -228,7 +233,13 @@ Network Error! Error handling status fetch Error handling status fetch + + 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 Lack information about duty hours No note. Search + mock location string