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 1/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 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 2/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 3/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 367bc7518ed9e37e52b17747289e7cd1049ed740 Mon Sep 17 00:00:00 2001 From: "marcin.jedynski" Date: Thu, 6 Dec 2018 22:31:02 +0100 Subject: [PATCH 4/7] fixed toast on send feedback, minor model adjustment of feedback --- .../com/uam/wmi/findmytutor/service/FeedbackService.java | 2 +- .../java/com/uam/wmi/findmytutor/utils/FeedbackUtils.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/FeedbackService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/FeedbackService.java index 6461a19..c5b318b 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/service/FeedbackService.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/service/FeedbackService.java @@ -10,7 +10,7 @@ import retrofit2.http.POST; public interface FeedbackService { @POST("api/Feedback") - Observable postFeedback(@Body Feedback feedback); + Observable> postFeedback(@Body Feedback feedback); @GET("api/Feedback") Observable getFeedback(); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/FeedbackUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/FeedbackUtils.java index 17021d3..26f2031 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/FeedbackUtils.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/FeedbackUtils.java @@ -82,10 +82,9 @@ public class FeedbackUtils { try { appVersion = activityContext.getPackageManager().getPackageInfo(activityContext.getPackageName(), 0).versionName; if( !mode ){ - body = PrefUtils.getUserFirstName(activityContext) + " " + PrefUtils.getUserLastName(activityContext) + "\n" + body; userFeedback = new Feedback(mode, header, - PrefUtils.getUserId(activityContext), + PrefUtils.getUserFirstName(activityContext) + " " + PrefUtils.getUserLastName(activityContext) + " | " + PrefUtils.getUserId(activityContext), "Android "+ Build.VERSION.RELEASE, appVersion, Build.MODEL, @@ -113,8 +112,10 @@ public class FeedbackUtils { .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::handleResponse, this::handleError)); } - private void handleResponse( Void resp) { + private void handleResponse( Response resp) { Toast.makeText(activityContext, activityContext.getString(R.string.modal_feedback_thankyou), Toast.LENGTH_SHORT).show(); + Log.d("FEEDBACK toast","gdzie jest mój tost"); + } private void handleError(Throwable error) { 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 5/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 a9469cce76ebf9fe6c56ad951fec20f6bd36ec43 Mon Sep 17 00:00:00 2001 From: "marcin.jedynski" Date: Thu, 6 Dec 2018 23:58:47 +0100 Subject: [PATCH 6/7] reverted api url back to master --- .../main/java/com/uam/wmi/findmytutor/network/ApiClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1835496..ad2003d 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/master/"; + private static final String BASE_URL = "https://s416084.projektstudencki.pl/develop/"; public static Retrofit getClient(Context context) { From 3f725cd3b3607dfb40462a48bfc819dc8676b1d6 Mon Sep 17 00:00:00 2001 From: Adam Domagalski Date: Mon, 10 Dec 2018 13:32:57 +0100 Subject: [PATCH 7/7] tranlation without map updated --- .idea/misc.xml | 7 +--- .../wmi/findmytutor/activity/MapActivity.java | 5 +++ .../activity/UsersListFragment.java | 17 ++++++-- .../findmytutor/utils/InfoHelperUtils.java | 28 +++++++++++++ app/src/main/res/layout/users_list.xml | 9 +++- app/src/main/res/values-pl/strings.xml | 40 ++++++++++++++++++ app/src/main/res/values/strings.xml | 41 ++++++++++++++++++- 7 files changed, 135 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/utils/InfoHelperUtils.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 75f1658..b0c7b20 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,10 +1,5 @@ - - - - - - + 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 1d8d0a1..f1ad46f 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 @@ -48,6 +48,7 @@ import com.uam.wmi.findmytutor.service.CoordinateService; import com.uam.wmi.findmytutor.service.PredefinedStatusesService; import com.uam.wmi.findmytutor.service.UserService; import com.uam.wmi.findmytutor.utils.ApproximatedLocalization; +import com.uam.wmi.findmytutor.utils.InfoHelperUtils; import com.uam.wmi.findmytutor.utils.ManualLocationUtils; import com.uam.wmi.findmytutor.utils.MapMarker; import com.uam.wmi.findmytutor.utils.MapUtils; @@ -68,6 +69,8 @@ import io.reactivex.schedulers.Schedulers; import okhttp3.ResponseBody; import timber.log.Timber; +import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; + public class MapActivity extends BaseActivity implements PermissionsListener, OnMapReadyCallback { @@ -751,4 +754,6 @@ public class MapActivity extends BaseActivity Toast.makeText(getApplicationContext(), v.getId() + "", Toast.LENGTH_SHORT).show(); } + + } \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java index 4430e89..c9cfa82 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java @@ -15,6 +15,7 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; +import android.widget.Toast; import com.annimon.stream.Stream; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; @@ -27,6 +28,7 @@ import com.uam.wmi.findmytutor.model.User; import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.service.TutorTabApi; import com.uam.wmi.findmytutor.service.UserService; +import com.uam.wmi.findmytutor.utils.InfoHelperUtils; import com.uam.wmi.findmytutor.utils.MyDividerItemDecoration; import com.uam.wmi.findmytutor.utils.RecyclerTouchListener; import com.uam.wmi.findmytutor.utils.RestApiHelper; @@ -76,12 +78,19 @@ public class UsersListFragment extends Fragment { mAdapter = new TutorsListAdapter(getActivity().getApplicationContext(), tutorsFiltered); View view = inflater.inflate(R.layout.users_list, container, false); view.setBackgroundColor(getResources().getColor(android.R.color.white)); + return view; } public void onViewCreated(View view, Bundle savedInstanceState) { ButterKnife.bind(this, view); + // TODO: Merge with code from home + InfoHelperUtils infoHelperUtils = new InfoHelperUtils(); + view.findViewById(R.id.userListInfoImageButton).setOnClickListener(v -> + infoHelperUtils.infoDialogUserList(getActivity(), v) + ); + userService = ApiClient.getClient(getApplicationContext()) .create(UserService.class); @@ -151,11 +160,11 @@ public class UsersListFragment extends Fragment { List dutyHoursList = Stream.of(tutorTabViewModel.getDutyHours()) .map(DutyHourViewModel::getSummary).toList(); - if(dutyHoursList.isEmpty()){ + if (dutyHoursList.isEmpty()) { dutyHoursList.add(getString(R.string.lack_duty_hours)); } - if(tutorTabViewModel.getNote().isEmpty()){ + if (tutorTabViewModel.getNote().isEmpty()) { userNoteText = getString(R.string.lack_note); } @@ -225,7 +234,7 @@ public class UsersListFragment extends Fragment { private int sortByUserName(User t1, User t2) { - return plCollator.compare(t1.getLastName(),t2.getLastName()); + return plCollator.compare(t1.getLastName(), t2.getLastName()); } private void showError(Throwable e) { @@ -234,7 +243,7 @@ public class UsersListFragment extends Fragment { if (e instanceof HttpException) { ResponseBody responseBody = ((HttpException) e).response().errorBody(); message = RestApiHelper.getErrorMessage(responseBody); - }else{ + } else { message = "Network Error !"; } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/InfoHelperUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/InfoHelperUtils.java new file mode 100644 index 0000000..0ccf9dd --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/InfoHelperUtils.java @@ -0,0 +1,28 @@ +package com.uam.wmi.findmytutor.utils; + +import android.app.Activity; +import android.content.Context; +import android.support.v7.app.AlertDialog; +import android.view.LayoutInflater; +import android.view.View; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.PopupWindow; +import android.widget.Toast; + + +import com.uam.wmi.findmytutor.R; + +import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; + +public class InfoHelperUtils { + + + public static void infoDialogUserList(Activity activity, View anchorView ) { + + View popupView = LayoutInflater.from(activity).inflate(R.layout.feedback_modal, null); + final PopupWindow popupWindow = new PopupWindow(popupView, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); + popupWindow.showAsDropDown(popupView); + Toast.makeText(getApplicationContext(), anchorView.getId() + "", Toast.LENGTH_SHORT).show(); + } +} diff --git a/app/src/main/res/layout/users_list.xml b/app/src/main/res/layout/users_list.xml index 397f01e..e87d8be 100644 --- a/app/src/main/res/layout/users_list.xml +++ b/app/src/main/res/layout/users_list.xml @@ -1,15 +1,22 @@ - + + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index db10ac8..37f2903 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -167,6 +167,46 @@ Czekam na studentów Na wakacjach Status + + + + Na mapie wyświetlane są markery reprezentujące profesorów udostępniających w tej chwili swoją lokalizację. + + + W tym panelu możesz dodać użytkowników do swojej czarnej listy. Użytkownicy z czarnej listy nie będą widzieć żadnych danych które udostępniasz - lokalizacji, twojego statusu online, czy informacji o obecności. + Jedyną informacją która wciąż będzie udostępniana wszystkim jest notka w Twoim profilu. + Za pomocą powyższego przycisku możesz włączyć lub wyłączyć używanie czarnej listy. Czarna lista nie może być aktywna jednocześnie z białą listą. + + + W tym panelu możesz dodać użytkowników do swojej białej listy. Użytkownicy SPOZA listy nie będą widzieć żadnych danych które udostępniasz - lokalizacji, twojego statusu online, czy informacji o obecności. + Jedyną informacją która wciąż będzie udostępniana wszystkim jest notka w Twoim profilu. + Za pomocą powyższego przycisku możesz włączyć lub wyłączyć używanie białej listy. Biała lista nie może być aktywna jednocześnie z czarną listą. + + + W tej zakładce możesz edytować swój profil widoczny dla wszystkich użytkowników. + Jeśli zakładka jest pusta lub zawiera nieaktualne dane, możesz je ręcznie uaktualnić. + W każdej chwili możesz przywrócić dane ze strony WMI za pomocą przycisku (jeśli są dostępne na stronie). + Dodatkowo możesz uzupełnić notkę, aby przekazać jakąś informację widoczną dla wszystkich studentów: np. “dzisiejszy dyżur odwołany” itp. + + + W tej zakładce możesz włączyć/wyłączyć udostępnianie swojej lokalizacji oraz ją skonfigurować. + Niektóre zmiany mogą nie być widoczne od razu! Odświeżanie informacji zajmuje do 2 minut. + Udostępniać możesz na jednym z 4 poziomów: + - dokładny - lokalizacja wyświetlana na mapie na podstawie GPS + - przybliżony - przybliżona lokalizacja wyświetlana na podstawie GPS + - manualny - udostępnianie z ręcznie wybranego punktu na mapie + - tylko obecność - udostępnianie jedynie informacji o pojawieniu się na wydziale (aktywny na liście), bez udostępniania lokalizacji + Każdy poziom z wyjątkiem manualnie wybranej lokalizacji automatycznie zaczyna udostępniać po wejściu na wydział i przestaje udostępniać po jego opuszczeniu. Wystarczy włączyć udostępnianie, a lokalizacja nie będzie udostępniana tylko przy obecności na wydziale. + Udostępnianie w dowolnym momencie można wyłączyć za pomocą przełącznika. + Dodatkowo, do Twojej lokalizacji możesz dodać status opisowy (będzie on widoczny dla użytkowników po kliknięciu w marker). + Zarówno manualne lokalizacje jak i statusy możesz dodać do listy, które potem możesz wybrać w wygodny sposób. + + + W tym panelu znajduje się listę profesorów. Ich status symbolizowany jest przez kolorowe kropki: + GREEN dot - użytkownik jest obecnie online + RED dot - użytkownik jest obecnie offline + BLACK dot - użytkownik jest nieaktywny (nie udostępnił żadnych danych o lokalizacji od conajmniej tygodnia). + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e5219be..4e7d9a4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -242,5 +242,44 @@ No note. Search mock location string - Na mapie wyświetlane są markery reprezentujące profesorów udostępniających w tej chwili swoją lokalizację. + + + + There are markers on the map which represent tutors sharing their location at the very moment. + + + In this panel you can add users to your blacklist. Users from the blacklist can’t see any data that you share - localization, online status, or information about presence. + The only thing which remains public is the note in your profile. + With the switch you can turn on/off usage of the blacklist. Blacklist and whitelist cannot be active at the same time. + + + In this panel you can add users to your whitelist. Users OUT OF the whitelist can’t see any data that you share - localization, online status, or information about presence. + The only thing which remains public is the note in your profile. + With the switch you can turn on/off usage of the whitelist. Blacklist and whitelist cannot be active at the same time. + + + In this tab you can edit you profile visible for all the users. + If the tab is empty or contains outdated information, you can update them manually. + Any time you can restore data from the WMI website with the button (if the data is available). + Additionally, you can fill your note, to share a message visible for all the users: for example “today’s duty hours are cancelled” etc. + + + In this tab you can turn on/off sharing your localization and configure it. + Some of the changes may not happen immediately! Refreshing information takes up to 2 minutes. + You can share your localization on one of the 4 levels: + - exact - localization displayed on a map, based on GPS + - approximated - approximated localization based on GPS + - manual - sharing from manually picked point + - presence only - sharing only information whether you are present on the faculty or not, without sharing your localization + Each level, except from manual, will be automatically turned on when entering, and turn off when leaving the faculty. You only need to make sure that sharing is on, and the localization will be shared only when on the faculty. + Sharing can be turned off at any time with the switch. + Additionally, you can add descriptive status to your localization (visible for users after clicking on a marker). + Both manual localizations and statuses can be added to a list, and then used them in a convenient way. + + + This panel contains the list of tutors. Their status is represented by colorful dots: + GREEN dot - user is currently online + RED dot - user is currently offline + BLACK dot - user is inactive (didn’t share any localization data since 7 days) +