Add presence mode
This commit is contained in:
parent
aa3c2eb9b8
commit
d5114a8587
@ -21,6 +21,7 @@ import android.widget.Button;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
|
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
|
||||||
import com.mapbox.android.core.permissions.PermissionsListener;
|
import com.mapbox.android.core.permissions.PermissionsListener;
|
||||||
import com.mapbox.android.core.permissions.PermissionsManager;
|
import com.mapbox.android.core.permissions.PermissionsManager;
|
||||||
@ -50,15 +51,20 @@ import com.uam.wmi.findmytutor.service.CoordinateService;
|
|||||||
import com.uam.wmi.findmytutor.service.UserService;
|
import com.uam.wmi.findmytutor.service.UserService;
|
||||||
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
||||||
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
||||||
|
import com.uam.wmi.findmytutor.utils.SharingLevel;
|
||||||
import com.uam.wmi.findmytutor.utils.mapUtils;
|
import com.uam.wmi.findmytutor.utils.mapUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
|
import io.reactivex.annotations.NonNull;
|
||||||
import io.reactivex.disposables.CompositeDisposable;
|
import io.reactivex.disposables.CompositeDisposable;
|
||||||
|
import io.reactivex.functions.Predicate;
|
||||||
import io.reactivex.observers.DisposableSingleObserver;
|
import io.reactivex.observers.DisposableSingleObserver;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
@ -70,6 +76,7 @@ import static com.mapbox.mapboxsdk.style.layers.Property.VISIBLE;
|
|||||||
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.circleColor;
|
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.circleColor;
|
||||||
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.circleRadius;
|
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.circleRadius;
|
||||||
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.visibility;
|
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.visibility;
|
||||||
|
import static java.util.stream.Collectors.toList;
|
||||||
|
|
||||||
|
|
||||||
public class MapActivity extends BaseActivity
|
public class MapActivity extends BaseActivity
|
||||||
@ -339,10 +346,11 @@ public class MapActivity extends BaseActivity
|
|||||||
private void fetchTopCoords() {
|
private void fetchTopCoords() {
|
||||||
|
|
||||||
disposable.add(
|
disposable.add(
|
||||||
// coordinateService.getTopCoordinates()
|
|
||||||
coordinateService.getOnlineCoordinates()
|
coordinateService.getOnlineCoordinates()
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.map(tutors -> Stream.of(tutors).
|
||||||
|
filterNot(t -> t.getDisplayMode().equals(SharingLevel.PRESENCE.toString())).toList())
|
||||||
.subscribeWith(new DisposableSingleObserver<List<Coordinate>>() {
|
.subscribeWith(new DisposableSingleObserver<List<Coordinate>>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -364,7 +372,7 @@ public class MapActivity extends BaseActivity
|
|||||||
if (previousCoordsIds.isEmpty()){
|
if (previousCoordsIds.isEmpty()){
|
||||||
previousCoordsIds.addAll(currentCoordsIds);
|
previousCoordsIds.addAll(currentCoordsIds);
|
||||||
} else {
|
} else {
|
||||||
// here we clear + it returns bool if smthing was removed
|
// here we clear + it returns bool if sth was removed
|
||||||
if (previousCoordsIds.removeAll(currentCoordsIds)) {
|
if (previousCoordsIds.removeAll(currentCoordsIds)) {
|
||||||
for (String toRemoveId: previousCoordsIds) {
|
for (String toRemoveId: previousCoordsIds) {
|
||||||
Log.e(tag+ "delete: " , "removing: " + toRemoveId + ": " + markerHash.get(toRemoveId));
|
Log.e(tag+ "delete: " , "removing: " + toRemoveId + ": " + markerHash.get(toRemoveId));
|
||||||
|
@ -31,6 +31,7 @@ import com.mapbox.geojson.Point;
|
|||||||
import com.uam.wmi.findmytutor.model.Coordinate;
|
import com.uam.wmi.findmytutor.model.Coordinate;
|
||||||
import com.uam.wmi.findmytutor.network.ApiClient;
|
import com.uam.wmi.findmytutor.network.ApiClient;
|
||||||
import com.uam.wmi.findmytutor.utils.ApproximatedLocalization;
|
import com.uam.wmi.findmytutor.utils.ApproximatedLocalization;
|
||||||
|
import com.uam.wmi.findmytutor.utils.Consts;
|
||||||
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
||||||
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
||||||
import com.uam.wmi.findmytutor.utils.SharingLevel;
|
import com.uam.wmi.findmytutor.utils.SharingLevel;
|
||||||
@ -46,6 +47,9 @@ import io.reactivex.schedulers.Schedulers;
|
|||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
import timber.log.Timber;
|
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.PrefUtils.storeBackgroundLocationStatus;
|
import static com.uam.wmi.findmytutor.utils.PrefUtils.storeBackgroundLocationStatus;
|
||||||
|
|
||||||
public class BackgroundLocalizationService extends Service {
|
public class BackgroundLocalizationService extends Service {
|
||||||
@ -53,7 +57,6 @@ public class BackgroundLocalizationService extends Service {
|
|||||||
private static final String TAG = "MyLocationService";
|
private static final String TAG = "MyLocationService";
|
||||||
private static final int LOCATION_INTERVAL = 1000;
|
private static final int LOCATION_INTERVAL = 1000;
|
||||||
private static final float LOCATION_DISTANCE = 5f;
|
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 = 10000;
|
||||||
Location mLastLocation;
|
Location mLastLocation;
|
||||||
Boolean stopService = false;
|
Boolean stopService = false;
|
||||||
@ -119,7 +122,6 @@ public class BackgroundLocalizationService extends Service {
|
|||||||
|
|
||||||
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
|
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
|
||||||
|
|
||||||
|
|
||||||
initializeLocationManager();
|
initializeLocationManager();
|
||||||
|
|
||||||
Integer providerIndex = 0;
|
Integer providerIndex = 0;
|
||||||
@ -207,20 +209,12 @@ public class BackgroundLocalizationService extends Service {
|
|||||||
|
|
||||||
Log.e("Best localization:", String.valueOf(bestLocation));
|
Log.e("Best localization:", String.valueOf(bestLocation));
|
||||||
|
|
||||||
/* if (bestLocation != null)
|
|
||||||
fn_update(bestLocation);
|
|
||||||
*/
|
|
||||||
|
|
||||||
mFusedLocationClient.getLastLocation().addOnSuccessListener(
|
mFusedLocationClient.getLastLocation().addOnSuccessListener(
|
||||||
new OnSuccessListener<Location>() {
|
location -> {
|
||||||
@Override
|
|
||||||
public void onSuccess(Location location) {
|
|
||||||
if (location != null) {
|
if (location != null) {
|
||||||
mLastLocation = location;
|
mLastLocation = location;
|
||||||
fn_update(location);
|
fn_update(location);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,20 +305,16 @@ public class BackgroundLocalizationService extends Service {
|
|||||||
protected Object doInBackground(Object[] objects) {
|
protected Object doInBackground(Object[] objects) {
|
||||||
|
|
||||||
if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.PRESENCE.toString())) {
|
if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.PRESENCE.toString())) {
|
||||||
longitude = 52.467491;
|
latitude = presenceLatitude;
|
||||||
latitude = 16.926782;
|
longitude = presencelongitude;
|
||||||
Log.e(TAG,"PRESENCE");
|
approximatedBuildingPart = presenceApproximatedName;
|
||||||
} else if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.APPROXIMATED.toString())) {
|
} else if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.APPROXIMATED.toString())) {
|
||||||
List<Double> points = approximatedLocalization.getPointerBuildingPart(approximatedBuildingPart);
|
List<Double> points = approximatedLocalization.getMiddlePointOfBuildingPart(approximatedBuildingPart);
|
||||||
|
|
||||||
latitude = points.get(0);
|
latitude = points.get(0);
|
||||||
longitude = points.get(1);
|
longitude = points.get(1);
|
||||||
Log.e(TAG,"APPROXIMATED");
|
|
||||||
}else {
|
|
||||||
Log.e(TAG,"EXACT");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Coordinate coordinate = new Coordinate(
|
Coordinate coordinate = new Coordinate(
|
||||||
latitude,
|
latitude,
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
package com.uam.wmi.findmytutor.utils;
|
package com.uam.wmi.findmytutor.utils;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.gson.JsonArray;
|
|
||||||
import com.google.gson.JsonElement;
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.mapbox.geojson.BoundingBox;
|
import com.mapbox.geojson.BoundingBox;
|
||||||
import com.mapbox.geojson.Feature;
|
import com.mapbox.geojson.Feature;
|
||||||
import com.mapbox.geojson.FeatureCollection;
|
import com.mapbox.geojson.FeatureCollection;
|
||||||
@ -19,7 +15,6 @@ import com.mapbox.geojson.gson.GeometryDeserializer;
|
|||||||
import com.mapbox.geojson.gson.PointDeserializer;
|
import com.mapbox.geojson.gson.PointDeserializer;
|
||||||
import com.mapbox.turf.TurfJoins;
|
import com.mapbox.turf.TurfJoins;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -56,7 +51,7 @@ public class ApproximatedLocalization {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Double> getPointerBuildingPart(String buildingPart) {
|
public List<Double> getMiddlePointOfBuildingPart(String buildingPart) {
|
||||||
|
|
||||||
for (Feature feature : Objects.requireNonNull(buildingSchema.features())) {
|
for (Feature feature : Objects.requireNonNull(buildingSchema.features())) {
|
||||||
String partName = feature.getStringProperty("name");
|
String partName = feature.getStringProperty("name");
|
||||||
@ -65,12 +60,7 @@ public class ApproximatedLocalization {
|
|||||||
Double longitude = feature.getNumberProperty("longitude").doubleValue();
|
Double longitude = feature.getNumberProperty("longitude").doubleValue();
|
||||||
Double latitude = feature.getNumberProperty("latitude").doubleValue();
|
Double latitude = feature.getNumberProperty("latitude").doubleValue();
|
||||||
|
|
||||||
List<Double> list = Arrays.asList(longitude,latitude);
|
return Arrays.asList(longitude, latitude);
|
||||||
|
|
||||||
Log.e("APPROX",partName + " " + buildingPart + list);
|
|
||||||
|
|
||||||
return list;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.uam.wmi.findmytutor.utils;
|
||||||
|
|
||||||
|
public class Consts {
|
||||||
|
public final static Double presenceLatitude = 52.467491;
|
||||||
|
public final static Double presencelongitude = 16.926782;
|
||||||
|
public final static String presenceApproximatedName = "unknown";
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user