From f3f2f3b90a1db3b7d969298db7245a0de91afcbb Mon Sep 17 00:00:00 2001 From: Adam Domagalski Date: Sun, 2 Dec 2018 21:29:47 +0100 Subject: [PATCH 1/7] acra wtih intented crash on manual loc select --- app/build.gradle | 6 ++ app/src/main/AndroidManifest.xml | 4 +- .../com/uam/wmi/findmytutor/FindMyTutor.java | 75 +++++++++++++++++++ .../findmytutor/activity/LoginActivity.java | 5 +- .../wmi/findmytutor/activity/MapActivity.java | 2 + .../wmi/findmytutor/network/ApiClient.java | 2 +- app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values/strings.xml | 5 ++ 8 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/FindMyTutor.java diff --git a/app/build.gradle b/app/build.gradle index e5042a6..ae76603 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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 3f3dd4d..ca25c8e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,11 +17,13 @@ + 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/LoginActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java index a7dd423..2cf6954 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 @@ -149,8 +149,11 @@ public class LoginActivity extends AppCompatActivity { private void loginProcess(String email, String password) { ValidateUser user = new ValidateUser(email, password); + LdapUser fuser = new LdapUser(email, password, "wmi", "tutor", "henryk", "zdzblo", email); + +// disposable.add(ldapService.validate(user) + disposable.add(ldapService.fakeValidate(fuser) - disposable.add(ldapService.validate(user) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::handleResponse, this::handleError)); 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..add3c34 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 @@ -301,6 +301,8 @@ public class MapActivity extends BaseActivity tmpLocalMarker = null; showLocationDialog(latLng); + // TODO remove after acra tests + throw new RuntimeException("This is a crash"); } }); }); 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 74ba47f..18c0c24 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 @@ -22,7 +22,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/master/"; + private static final String BASE_URL = "https://s416084.projektstudencki.pl/develop/"; public static Retrofit getClient(Context context) { diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 194554a..27a5a0d 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -159,6 +159,7 @@ Błąd sieci! Błąd podczas pobierania danych. Błąd podczas pobierania statusów. + Upss. Coś poszło nie tak. Pracujemy nad tym! diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d1dc9eb..96550e9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -228,4 +228,9 @@ 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 From 5e51be5d0b75214e1e097a76790d3543aa85e8c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Wed, 5 Dec 2018 00:45:16 +0100 Subject: [PATCH 2/7] First attempt --- .../findmytutor/activity/BaseActivity.java | 9 +-- .../BackgroundLocalizationService.java | 77 ++++++++++++++----- .../utils/ManualLocationUtils.java | 2 - 3 files changed, 62 insertions(+), 26 deletions(-) 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..da73814 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 @@ -77,6 +77,7 @@ public abstract class BaseActivity private Fragment userListFragment; private ActiveFragment activeFragment = ActiveFragment.NONE; + private Fragment activeBottomMenu = null; private SearchView searchView; @SuppressLint("CheckResult") @@ -351,7 +352,7 @@ public abstract class BaseActivity } else if (itemId == R.id.nav_user_list) { loadUserListFragment(); } - + selectBottomNavigationBarItem(itemId); }, 300); return true; @@ -363,6 +364,7 @@ public abstract class BaseActivity FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.activity_content, sharingFragment); ft.commit(); + } private void loadUserListFragment() { @@ -372,8 +374,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 +387,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/service/BackgroundLocalizationService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java index 47e0730..20df4d6 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 @@ -23,6 +23,7 @@ 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; @@ -36,16 +37,21 @@ 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.Predicate; +import org.apache.commons.collections4.queue.CircularFifoQueue; + import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import java.util.Queue; 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; @@ -59,6 +65,10 @@ public class BackgroundLocalizationService extends Service { private static final float LOCATION_DISTANCE = 5f; public static String str_receiver = "background.location.broadcast"; private static long notify_interval = 10000; + private static long notify_interval_inside_building = 10000; + private static long notify_interval_outside_building = 20000; + //private static long notify_interval_outside_building = 900000; + private CircularFifoQueue coordinatesHistory = new CircularFifoQueue(5); Location mLastLocation; Boolean stopService = false; Intent intent; @@ -82,7 +92,6 @@ public class BackgroundLocalizationService extends Service { new LocationListener(LocationManager.NETWORK_PROVIDER), new LocationListener(LocationManager.PASSIVE_PROVIDER) }; - } @Override @@ -146,23 +155,42 @@ public class BackgroundLocalizationService extends Service { } if (!stopService) { - - mStatusChecker = () -> { try { fn_getlocation(); + changeBackgroundMode(); } finally { mHandler.postDelayed(mStatusChecker, notify_interval); } }; AsyncTask.execute(mStatusChecker); + } + } + + + private void changeBackgroundMode() { + Predicate p2 = v -> !v; + if(coordinatesHistory.size() > 4){ + Boolean shouldExtendTimeInterval = Stream.of(coordinatesHistory) + .map(MapUtils::checkIfCoordinateIsValid).takeWhile( s-> !s).toList().size() == 5; + + if(shouldExtendTimeInterval){ + notify_interval = notify_interval_outside_building; + }else{ + notify_interval = notify_interval_inside_building; + } } + Log.e("COORD_HISTORY", String.valueOf(Stream.of(coordinatesHistory) + .map(MapUtils::checkIfCoordinateIsValid).toList())); + Log.e("COORD_HISTORY", String.valueOf(coordinatesHistory)); + Log.e("NEW INTERVAL", String.valueOf(notify_interval)); } + @RequiresApi(api = Build.VERSION_CODES.O) private void startMyOwnForeground() { @@ -198,29 +226,38 @@ 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) { @@ -333,6 +370,8 @@ public class BackgroundLocalizationService extends Service { approximatedBuildingPart = PrefUtils.getManualLocationApproximation(getApplicationContext()); } + + try { Coordinate coordinate = new Coordinate( latitude, 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) { From 0dd0b0dc23ea2b34cb0c8a54656d09b13d1f4ef7 Mon Sep 17 00:00:00 2001 From: Domagalski Date: Wed, 5 Dec 2018 22:45:11 +0100 Subject: [PATCH 3/7] added some translation and removed throwing error for testing --- .idea/misc.xml | 2 +- .../com/uam/wmi/findmytutor/activity/MapActivity.java | 6 ------ app/src/main/res/values-pl/strings.xml | 4 ++++ app/src/main/res/values/strings.xml | 8 +++++++- 4 files changed, 12 insertions(+), 8 deletions(-) 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/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java index add3c34..5f6c6e3 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 @@ -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; @@ -301,8 +299,6 @@ public class MapActivity extends BaseActivity tmpLocalMarker = null; showLocationDialog(latLng); - // TODO remove after acra tests - throw new RuntimeException("This is a crash"); } }); }); @@ -625,8 +621,6 @@ public class MapActivity extends BaseActivity super.onDestroy(); mapView.onDestroy(); mHandler.removeCallbacks(mStatusChecker); - // TODO remove after BG sending - manualLocHandler.removeCallbacks(manualLocStatusChecker); disposable.dispose(); } diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 14d7671..db10ac8 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -163,6 +163,10 @@ 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 c016677..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 @@ -236,4 +241,5 @@ Lack information about duty hours No note. Search + mock location string From 381373b4b7050464eedbe222de16649768217bcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Wed, 5 Dec 2018 23:38:13 +0100 Subject: [PATCH 4/7] Fetch markers only when screen is on --- .../wmi/findmytutor/activity/MapActivity.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) 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..5a783ec 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; @@ -100,6 +100,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 +116,9 @@ public class MapActivity extends BaseActivity mStatusChecker = () -> { try { - fetchTopCoords(); + if (shouldFetchNewCoords) { + fetchTopCoords(); + } } finally { mHandler.postDelayed(mStatusChecker, mInterval); } @@ -226,7 +229,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(); @@ -372,7 +375,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 +392,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(); } @@ -592,6 +595,7 @@ public class MapActivity extends BaseActivity public void onResume() { super.onResume(); mapView.onResume(); + shouldFetchNewCoords = true; } @Override @@ -604,12 +608,15 @@ 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 @@ -723,6 +730,6 @@ public class MapActivity extends BaseActivity } public void adjustMapToSearch(Integer zoom) { - MapUtils.setZoom(mapboxMap,zoom); + MapUtils.setZoom(mapboxMap, zoom); } } From 0cec17dd16e18e04e1dae83847d149cff8713dfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Thu, 6 Dec 2018 21:32:13 +0100 Subject: [PATCH 5/7] Create handlers for coming in and out from building --- .../uam/wmi/findmytutor/model/Coordinate.java | 5 ++-- .../BackgroundLocalizationService.java | 26 ++++++++++--------- .../com/uam/wmi/findmytutor/utils/Consts.java | 6 ++--- .../uam/wmi/findmytutor/utils/MapUtils.java | 15 +++-------- 4 files changed, 23 insertions(+), 29 deletions(-) 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..7334350 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,6 +3,7 @@ package com.uam.wmi.findmytutor.model; import android.util.Range; import com.google.gson.annotations.SerializedName; +import com.uam.wmi.findmytutor.utils.Consts; import java.util.Objects; import java.util.UUID; @@ -14,8 +15,8 @@ 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 = Consts.latitudeRange; + private Range longtitudeRange = Consts.longitudeRange; @SerializedName("coordinateId") private UUID coordinateId = null; 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 20df4d6..aca3b5f 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 @@ -63,15 +63,15 @@ 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; private static long notify_interval_inside_building = 10000; - private static long notify_interval_outside_building = 20000; + private static long notify_interval_outside_building = 360000; + //private static long notify_interval_outside_building = 900000; - private CircularFifoQueue coordinatesHistory = new CircularFifoQueue(5); + private static int coordinatesHistoryLength = 10; + private CircularFifoQueue coordinatesHistory = new CircularFifoQueue(coordinatesHistoryLength); Location mLastLocation; Boolean stopService = false; - Intent intent; ArrayList providers = new ArrayList(); LocationListener[] mLocationListeners; @@ -171,22 +171,27 @@ public class BackgroundLocalizationService extends Service { private void changeBackgroundMode() { - Predicate p2 = v -> !v; if(coordinatesHistory.size() > 4){ Boolean shouldExtendTimeInterval = Stream.of(coordinatesHistory) - .map(MapUtils::checkIfCoordinateIsValid).takeWhile( s-> !s).toList().size() == 5; + .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{ + }else if (shouldAbbreviateTimeInterval){ notify_interval = notify_interval_inside_building; } } Log.e("COORD_HISTORY", String.valueOf(Stream.of(coordinatesHistory) .map(MapUtils::checkIfCoordinateIsValid).toList())); - Log.e("COORD_HISTORY", String.valueOf(coordinatesHistory)); - Log.e("NEW INTERVAL", String.valueOf(notify_interval)); + + Log.e("COORD_HISTORY", String.valueOf(Stream.of(coordinatesHistory) + .map(x -> x.getLatitude() + " " + x.getLongitude()).toList())); + Log.e("COORD_NEW INTERVAL", String.valueOf(notify_interval)); } @@ -255,9 +260,6 @@ public class BackgroundLocalizationService extends Service { Log.e("Best localization:", String.valueOf(bestLocation)); } - - - } private void fn_update(Location location) { 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 index 7f03193..4af26c4 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/Consts.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/Consts.java @@ -7,8 +7,8 @@ public class Consts { 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); + 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); } 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..a56ca7e 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,21 @@ 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 android.util.Log; -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.Consts.longitudeRange; public class MapUtils { @@ -85,7 +76,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 From c96e19cb2d675edbe107a54c9554079c6ba78fd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Thu, 6 Dec 2018 22:38:22 +0100 Subject: [PATCH 6/7] Fix map --- .../java/com/uam/wmi/findmytutor/activity/MapActivity.java | 3 +-- .../findmytutor/service/BackgroundLocalizationService.java | 5 +++-- app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) 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 c4ba89f..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 @@ -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(), @@ -606,7 +606,6 @@ public class MapActivity extends BaseActivity super.onStop(); mapView.onStop(); shouldFetchNewCoords = false; - } @Override 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 d2000fc..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 @@ -49,6 +49,7 @@ 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.presenceApproximatedName; import static com.uam.wmi.findmytutor.utils.Const.presenceLatitude; import static com.uam.wmi.findmytutor.utils.Const.presenceLongitude; @@ -59,8 +60,8 @@ 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 = 10000; - private static long notify_interval_inside_building = 10000; + 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; 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 e37fd1f..fa92616 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,6 +6,7 @@ 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; From d735950e7ae40cc0ce175ad0bab546f5d28b0f65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Thu, 6 Dec 2018 23:37:22 +0100 Subject: [PATCH 7/7] Merge --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 5a09b18..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