From 1094ef942b74fcd50107b2955165bc562f1d3e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Tue, 6 Nov 2018 23:50:13 +0100 Subject: [PATCH 1/3] Add FusedLocalizationApi --- .idea/encodings.xml | 6 ----- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 4 +++ .../findmytutor/activity/BaseActivity.java | 15 ++++------- .../wmi/findmytutor/activity/MapActivity.java | 4 +-- .../activity/SettingsActivity.java | 7 ++++++ .../findmytutor/activity/StartupActivity.java | 4 --- .../activity/UsersListFragment.java | 5 ++-- .../BackgroundLocalizationService.java | 25 ++++++++++++++++--- .../uam/wmi/findmytutor/utils/PrefUtils.java | 5 ---- app/src/main/res/drawable/ic_cancel.xml | 4 +++ app/src/main/res/drawable/ic_launch.xml | 4 +++ app/src/main/res/values/strings.xml | 5 ++++ 13 files changed, 56 insertions(+), 33 deletions(-) delete mode 100644 .idea/encodings.xml create mode 100644 app/src/main/res/drawable/ic_cancel.xml create mode 100644 app/src/main/res/drawable/ic_launch.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 646dfea..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index ab8ae7e..87b98e5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,6 +57,7 @@ dependencies { implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' implementation 'com.auth0.android:jwtdecode:1.1.1' implementation 'com.annimon:stream:1.2.1' + implementation 'com.google.android.gms:play-services-location:16.0.0' // FloatingBarMenu implementation 'com.getbase:floatingactionbutton:1.10.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5b1bc92..bb4aa0c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -50,6 +50,10 @@ android:name=".activity.SettingsActivity" android:label="@string/title_activity_settings" /> + + { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java index 430311b..d0fd9dc 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java @@ -46,8 +46,4 @@ public class StartupActivity extends AppCompatActivity { finish(); } - - - - } 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 ecc460a..82888b2 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 @@ -105,7 +105,6 @@ public class UsersListFragment extends Fragment { } })); - } public void searchUser(String textToSearch) { @@ -217,11 +216,13 @@ public class UsersListFragment extends Fragment { } private void showError(Throwable e) { - String message = e.toString(); + String message; if (e instanceof HttpException) { ResponseBody responseBody = ((HttpException) e).response().errorBody(); message = RestApiHelper.getErrorMessage(responseBody); + }else{ + message = "Network Error !"; } Snackbar.make(coordinatorLayout, message, Snackbar.LENGTH_LONG) 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 24ebc30..2b3ca3c 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,9 @@ import android.support.v4.app.ActivityCompat; import android.support.v4.app.NotificationCompat; import android.util.Log; +import com.google.android.gms.location.FusedLocationProviderClient; +import com.google.android.gms.location.LocationServices; +import com.google.android.gms.tasks.OnSuccessListener; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.uam.wmi.findmytutor.model.Coordinate; import com.uam.wmi.findmytutor.network.ApiClient; @@ -31,6 +34,7 @@ import com.uam.wmi.findmytutor.utils.RestApiHelper; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -58,6 +62,7 @@ public class BackgroundLocalizationService extends Service { private Handler mHandler = new Handler(); private HandlerThread mHandlerThread = null; private Runnable mStatusChecker; + private FusedLocationProviderClient mFusedLocationClient; public BackgroundLocalizationService() { providers.add(LocationManager.GPS_PROVIDER); @@ -107,6 +112,9 @@ public class BackgroundLocalizationService extends Service { startForeground(1001, notification); } + mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); + + initializeLocationManager(); Integer providerIndex = 0; @@ -194,8 +202,21 @@ public class BackgroundLocalizationService extends Service { Log.e("Best localization:", String.valueOf(bestLocation)); - if (bestLocation != null) + /* if (bestLocation != null) fn_update(bestLocation); +*/ + + mFusedLocationClient.getLastLocation().addOnSuccessListener( + new OnSuccessListener() { + @Override + public void onSuccess(Location location) { + if (location != null) { + mLastLocation = location; + fn_update(location); + } + } + + }); } private void fn_update(Location location) { @@ -321,7 +342,5 @@ public class BackgroundLocalizationService extends Service { return null; } - } - } \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java index 193e29d..0982f5a 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java @@ -20,7 +20,6 @@ public class PrefUtils { return context.getSharedPreferences("com.uam.wmi.findmytutor_preferences", Context.MODE_PRIVATE); } - public static void getAllKeys(Context context){ Map keys = getSharedPreferences(context).getAll(); @@ -35,9 +34,6 @@ public class PrefUtils { editor.clear().apply(); } - - - public static void storeApiKey(Context context, String apiKey) { SharedPreferences.Editor editor = getSharedPreferences(context).edit(); editor.putString("API_KEY", apiKey); @@ -150,5 +146,4 @@ public class PrefUtils { editor.putBoolean("BACKGROUND_SERVICE_STATUS", status); editor.apply(); } - } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_cancel.xml b/app/src/main/res/drawable/ic_cancel.xml new file mode 100644 index 0000000..a8b409b --- /dev/null +++ b/app/src/main/res/drawable/ic_cancel.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launch.xml b/app/src/main/res/drawable/ic_launch.xml new file mode 100644 index 0000000..a8b409b --- /dev/null +++ b/app/src/main/res/drawable/ic_launch.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 198b7f7..60e0d13 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -189,5 +189,10 @@ Log in Users list Invalid login format. + Locale utils + Permission denied + permission should be granted + + From 5f65d8e6fb5bf546d1ee4df45362b753ee5f766e Mon Sep 17 00:00:00 2001 From: Adam Domagalski Date: Tue, 6 Nov 2018 23:51:46 +0100 Subject: [PATCH 2/3] marker removing --- .../wmi/findmytutor/activity/MapActivity.java | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 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 9eb5cc4..1374548 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 @@ -57,7 +57,10 @@ import com.uam.wmi.findmytutor.utils.PrefUtils; import com.uam.wmi.findmytutor.utils.RestApiHelper; import com.uam.wmi.findmytutor.utils.mapUtils; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -67,6 +70,7 @@ import io.reactivex.schedulers.Schedulers; import okhttp3.ResponseBody; import timber.log.Timber; import java.util.Locale; +import java.util.Set; public class MapActivity extends BaseActivity @@ -90,6 +94,8 @@ public class MapActivity extends BaseActivity private Marker droppedMarker; private HashMap coordsMap = new HashMap<>(); private HashMap markerHash = new HashMap<>(); + private Set previousCoordsIds = new HashSet<>(); + private int zoomParam = 17; private int bearingParam = 180; @@ -101,7 +107,6 @@ public class MapActivity extends BaseActivity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - final SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE); final String authToken = sharedPref.getString("authToken", null); @@ -298,8 +303,30 @@ public class MapActivity extends BaseActivity @Override public void onSuccess(List coordsList) { + ArrayList currentCoordsIds = new ArrayList<>(); + for (Coordinate coordinate : coordsList) { + currentCoordsIds.add(coordinate.getUserId()); + } + +// Set currentCoordsIds = new HashSet(tmp); + if (previousCoordsIds.isEmpty()){ + previousCoordsIds.addAll(currentCoordsIds); + } else { + // here we clear + it returns bool if smthing was removed + if (previousCoordsIds.removeAll(currentCoordsIds)) { + for (String toRemoveId: previousCoordsIds) { + Log.e(tag+ "delete: " , "removing: " + toRemoveId + ": " + markerHash.get(toRemoveId)); + mapboxMap.removeMarker(markerHash.get(toRemoveId)); + markerHash.remove(toRemoveId); + coordsMap.remove(toRemoveId); + } + } else { + Log.e(tag+ "delete: ","nothing to remove"); + } + } + + - Log.e(tag, ""); for (Coordinate element : coordsList) { String id = element.getUserId(); @@ -348,19 +375,9 @@ public class MapActivity extends BaseActivity } } - /* for (Coordinate coordinate : coordsMap.values()) { - // 300000 = 5mins - if ((System.currentTimeMillis() - coordinate.getTimeStamp()) > (long) 300000) { - String id = coordinate.getUserId(); - Marker markerToRemove = markerHash.get(id); - markerHash.remove(id); - coordsMap.remove(id); - mapboxMap.removeMarker(markerToRemove); - } - - }*/ - - + // For next fetch + previousCoordsIds.clear(); + previousCoordsIds.addAll(currentCoordsIds); } @SuppressLint("LongLogTag") From 5d595c4c650b2b494319bf43973a6712cb293bbd Mon Sep 17 00:00:00 2001 From: Adam Domagalski Date: Wed, 7 Nov 2018 00:28:19 +0100 Subject: [PATCH 3/3] if statemnt added in case of empty --- .../wmi/findmytutor/activity/MapActivity.java | 16 ++++++++++++---- 1 file changed, 12 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 d742afd..207ba14 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 @@ -348,12 +348,19 @@ public class MapActivity extends BaseActivity @Override public void onSuccess(List coordsList) { - ArrayList currentCoordsIds = new ArrayList<>(); - for (Coordinate coordinate : coordsList) { - currentCoordsIds.add(coordinate.getUserId()); + if(coordsList.isEmpty()) { + Log.e(tag, "200 empty []"); + mapboxMap.clear(); + return; } -// Set currentCoordsIds = new HashSet(tmp); + + ArrayList tmp = new ArrayList<>(); + for (Coordinate coordinate : coordsList) { + tmp.add(coordinate.getUserId()); + } + + Set currentCoordsIds = new HashSet<>(tmp); if (previousCoordsIds.isEmpty()){ previousCoordsIds.addAll(currentCoordsIds); } else { @@ -366,6 +373,7 @@ public class MapActivity extends BaseActivity coordsMap.remove(toRemoveId); } } else { + // TODO double check when some markers api will change Log.e(tag+ "delete: ","nothing to remove"); } }