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 0b6f8b6..a480621 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 @@ -140,8 +140,10 @@ public class MapActivity extends BaseActivity removeLocationButton.setOnClickListener(view -> { Log.e(tag + "Manual", "manual coords sending stopped"); + stopBackgroundLocalizationTask(); + // TODO to remove after BGserv - manualLocHandler.removeCallbacks(manualLocStatusChecker); +// manualLocHandler.removeCallbacks(manualLocStatusChecker); removeLocationButton.setVisibility(View.GONE); Toast.makeText(MapActivity.this, "Your marker will disappear in next couple minutes", Toast.LENGTH_SHORT).show(); @@ -156,7 +158,9 @@ public class MapActivity extends BaseActivity setToggleMapBoundsArea(); - setOnMapLongClickListener(); + if (PrefUtils.getIsTutor(this)){ + setOnMapLongClickListener(); + } // addStaticLayer(); } @@ -264,43 +268,44 @@ public class MapActivity extends BaseActivity PrefUtils.getUserId(getApplicationContext()), PrefUtils.getLocationLevel(getApplicationContext()) ); + PrefUtils.putManualLocation(this, latLng); - // TODO remove after BG sending - manualLocStatusChecker = () -> { - try { - Log.e(tag + "Manual", "sending manual coords"); - // TODO ^^^ wrapper to removve - disposable.add( - coordinateService - .postCoordinate(droppedMarkercoordinate) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(new DisposableSingleObserver() { - @SuppressLint("LongLogTag") - @Override - public void onSuccess(Coordinate coord) { - Log.e(tag + "POST", String.valueOf(coord)); - } - - @SuppressLint("LongLogTag") - @Override - public void onError(Throwable e) { - - Log.e(tag + "onError", e.getMessage()); - - if (e instanceof HttpException) { - ResponseBody responseBody = ((HttpException) e).response().errorBody(); - Log.e(tag + "onError", RestApiHelper.getErrorMessage(responseBody)); - - } - } - })); - // TODO \/\/\/\/\/ wrapper to removve - } finally { - manualLocHandler.postDelayed(manualLocStatusChecker, mInterval); - } - }; - manualLocStatusChecker.run(); +// // TODO remove after BG sending +// manualLocStatusChecker = () -> { +// try { +// Log.e(tag + "Manual", "sending manual coords"); +// // TODO ^^^ wrapper to removve +// disposable.add( +// coordinateService +// .postCoordinate(droppedMarkercoordinate) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribeWith(new DisposableSingleObserver() { +// @SuppressLint("LongLogTag") +// @Override +// public void onSuccess(Coordinate coord) { +// Log.e(tag + "POST", String.valueOf(coord)); +// } +// +// @SuppressLint("LongLogTag") +// @Override +// public void onError(Throwable e) { +// +// Log.e(tag + "onError", e.getMessage()); +// +// if (e instanceof HttpException) { +// ResponseBody responseBody = ((HttpException) e).response().errorBody(); +// Log.e(tag + "onError", RestApiHelper.getErrorMessage(responseBody)); +// +// } +// } +// })); +// // TODO \/\/\/\/\/ wrapper to removve +// } finally { +// manualLocHandler.postDelayed(manualLocStatusChecker, mInterval); +// } +// }; +// manualLocStatusChecker.run(); } catch (IllegalArgumentException e) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java index e08ad48..7358b59 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java @@ -105,7 +105,6 @@ public class SharingFragment extends PreferenceFragment { locationLevelMapping.put(2, SharingLevel.EXACT.toString()); locationLevelMapping.put(3, SharingLevel.MANUAL.toString()); - statusMapping = new HashMap(); statusMapping.put(0,"available"); statusMapping.put(1,"consultation"); @@ -119,6 +118,7 @@ public class SharingFragment extends PreferenceFragment { }); /** Sharing level list **/ + locationMode.setSummary(PrefUtils.getLocationLevel(getApplicationContext())); locationMode.setOnPreferenceChangeListener((preference, newValue) -> { PrefUtils.storeLocationMode(getApplicationContext(),locationLevelMapping.get(Integer.parseInt((String) newValue))); if(PrefUtils.getLocationLevel(getApplicationContext()) == "manual"){ 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 b257bfd..d901db4 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 @@ -28,6 +28,7 @@ import com.google.android.gms.location.LocationServices; import com.google.android.gms.tasks.OnSuccessListener; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.mapbox.geojson.Point; +import com.mapbox.mapboxsdk.geometry.LatLng; import com.uam.wmi.findmytutor.model.Coordinate; import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.utils.ApproximatedLocalization; @@ -304,15 +305,20 @@ public class BackgroundLocalizationService extends Service { @Override protected Object doInBackground(Object[] objects) { - if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.PRESENCE.toString())) { + String locationLevel = PrefUtils.getLocationLevel(getApplicationContext()); + + if (locationLevel.equals(SharingLevel.PRESENCE.toString())) { latitude = presenceLatitude; longitude = presencelongitude; approximatedBuildingPart = presenceApproximatedName; - } else if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.APPROXIMATED.toString())) { + } else if (locationLevel.equals(SharingLevel.APPROXIMATED.toString())) { List points = approximatedLocalization.getMiddlePointOfBuildingPart(approximatedBuildingPart); - latitude = points.get(0); longitude = points.get(1); + } else if (locationLevel.equals(SharingLevel.MANUAL.toString())) { + LatLng latLng = PrefUtils.getManualLocation(getApplicationContext()); + latitude = latLng.getLatitude(); + longitude = latLng.getLongitude(); } try { @@ -323,7 +329,7 @@ public class BackgroundLocalizationService extends Service { approximatedBuildingPart, (PrefUtils.isStatusEnabled(getApplicationContext())) ? PrefUtils.getUserStatus(getApplicationContext()) : "", PrefUtils.getUserId(getApplicationContext()), - PrefUtils.getLocationLevel(getApplicationContext()) + locationLevel ); disposable.add( 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 6a8793b..b70f36f 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 @@ -5,6 +5,8 @@ import android.content.SharedPreferences; import android.preference.ListPreference; import android.preference.PreferenceFragment; import android.util.Log; + +import com.mapbox.mapboxsdk.geometry.LatLng; import com.uam.wmi.findmytutor.activity.SharingFragment; import com.auth0.android.jwt.Claim; import com.auth0.android.jwt.JWT; @@ -20,11 +22,11 @@ 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(); + public static void getAllKeys(Context context) { + Map keys = getSharedPreferences(context).getAll(); - for(Map.Entry entry : keys.entrySet()){ - Log.d("map values",entry.getKey() + ": " + entry.getValue().toString()); + for (Map.Entry entry : keys.entrySet()) { + Log.d("map values", entry.getKey() + ": " + entry.getValue().toString()); } } @@ -54,14 +56,16 @@ public class PrefUtils { return getSharedPreferences(context).getString("USER_ID", null); } - public static boolean isStatusEnabled(Context context){ - return getSharedPreferences(context).getBoolean("key_status_enabled",false); + public static boolean isStatusEnabled(Context context) { + return getSharedPreferences(context).getBoolean("key_status_enabled", false); } + public static String getUserStatus(Context context) { return getSharedPreferences(context).getString("status_entry", "Available"); } - public static void storeStatus(Context context, String status){ + + public static void storeStatus(Context context, String status) { SharedPreferences.Editor editor = getSharedPreferences(context).edit(); editor.putString("status_entry", status); editor.apply(); @@ -91,15 +95,17 @@ public class PrefUtils { return getSharedPreferences(context).getBoolean("key_sharing_enabled", false); } - public static void storeEnableSharingLocalization(Context context,Boolean isChecked) { + public static void storeEnableSharingLocalization(Context context, Boolean isChecked) { SharedPreferences.Editor editor = getSharedPreferences(context).edit(); editor.putBoolean("key_sharing_enabled", isChecked); editor.apply(); } - public static String getLocationLevel(Context context){ + + public static String getLocationLevel(Context context) { return getSharedPreferences(context).getString("location_mode", "exact"); } - public static void storeLocationMode(Context context, String mode){ + + public static void storeLocationMode(Context context, String mode) { SharedPreferences.Editor editor = getSharedPreferences(context).edit(); editor.putString("location_mode", mode); editor.apply(); @@ -150,4 +156,22 @@ public class PrefUtils { editor.putBoolean("BACKGROUND_SERVICE_STATUS", status); editor.apply(); } + + public static void putManualLocation(Context context, LatLng latLng) { + SharedPreferences.Editor editor = getSharedPreferences(context).edit(); + + editor.putString("location_mode", "manual"); + editor.putBoolean("key_sharing_enabled", true); + editor.putLong("longitude_manual_location", Double.doubleToRawLongBits(latLng.getLongitude())); + editor.putLong("latitude_manual_location", Double.doubleToRawLongBits(latLng.getLatitude())); + editor.apply(); + } + + public static LatLng getManualLocation(Context context) { + return new LatLng( + Double.longBitsToDouble(getSharedPreferences(context).getLong("latitude_manual_location", 0)), + Double.longBitsToDouble(getSharedPreferences(context).getLong("longitude_manual_location", 0)) + ); + } + } \ No newline at end of file