From 5757a58edfe4d0f25466651a4d4f7abda9dccbd3 Mon Sep 17 00:00:00 2001 From: Marcin Jedynski Date: Tue, 6 Nov 2018 03:04:17 +0100 Subject: [PATCH] adjusted background task and shared pref file to work together throught PrefUtils --- .../findmytutor/activity/BaseActivity.java | 4 +- .../wmi/findmytutor/activity/MapActivity.java | 3 +- .../findmytutor/activity/SharingFragment.java | 47 +++++++++++++++++-- .../uam/wmi/findmytutor/model/Coordinate.java | 3 +- .../BackgroundLocalizationService.java | 6 ++- .../uam/wmi/findmytutor/utils/PrefUtils.java | 25 ++++++++-- app/src/main/res/layout/pref_sharing.xml | 17 ++++--- app/src/main/res/values-pl/strings.xml | 5 ++ app/src/main/res/values/strings.xml | 2 + 9 files changed, 90 insertions(+), 22 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 4a2cea1..7792421 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 @@ -190,8 +190,8 @@ public abstract class BaseActivity } } - public void handleBackgroundTaskLifeCycle() { - if (PrefUtils.isEnableSharingLocalization(getApplicationContext())) { + public void handleBackgroundTaskLifeCycle(boolean isLocationEnabled) { + if (isLocationEnabled) { startBackgroundLocalizationTask(); } else { stopBackgroundLocalizationTask(); 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 88014c1..1dae96f 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 @@ -188,7 +188,8 @@ public class MapActivity extends BaseActivity latLng.getLongitude(), latLng.getAltitude(), PrefUtils.getUserFirstName(getApplicationContext()) + " " + PrefUtils.getUserLastName(getApplicationContext()), - PrefUtils.getUserId(getApplicationContext()) + PrefUtils.getUserId(getApplicationContext()), + PrefUtils.getLocationLevel(getApplicationContext()) ); disposable.add( 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 e671a31..475367c 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 @@ -14,13 +14,17 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.service.BackgroundLocalizationService; import com.uam.wmi.findmytutor.utils.PrefUtils; import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; +import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Set; @@ -28,25 +32,51 @@ import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; public class SharingFragment extends PreferenceFragment { + private HashMap locationLevelMapping; +// private HashMap statusMapping; @SuppressLint("ResourceType") @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); + locationLevelMapping = new HashMap(); + locationLevelMapping.put(0,"presence"); + locationLevelMapping.put(1,"approximated"); + locationLevelMapping.put(2,"exact"); + +/* statusMapping = new HashMap(); + statusMapping.put(0,"presence"); + statusMapping.put(1,"approximated"); + statusMapping.put(2,"exact");*/ + addPreferencesFromResource(R.layout.pref_sharing); Preference manualStatus = findPreference("key_manual_status"); Preference locationSharing = findPreference("key_sharing_enabled"); + Preference locationMode = findPreference("key_location_level"); + Preference statusList = findPreference("key_status_value"); + manualStatus.setOnPreferenceChangeListener((preference, newValue) -> { ListPreference lp = (ListPreference) findPreference("key_status_value"); updateListPreference(lp, newValue, "manual_statuses"); return true; }); + locationMode.setOnPreferenceChangeListener((preference, newValue) -> { + ListPreference lp = (ListPreference) preference; + PrefUtils.storeLocationMode(getApplicationContext(),locationLevelMapping.get(Integer.parseInt((String) newValue))); + return true; + }); + statusList.setOnPreferenceChangeListener((preference, newValue) -> { + ListPreference lp = (ListPreference) preference; + CharSequence [] entries = lp.getEntries(); + PrefUtils.storeStatus(getApplicationContext(),(String) entries[Integer.parseInt((String) newValue)]); + return true; + }); - locationSharing.setOnPreferenceChangeListener((buttonView, isChecked) -> { - PrefUtils.storeEnableSharingLocalization(getApplicationContext(), (Boolean) isChecked); - ((MapActivity)getActivity()).handleBackgroundTaskLifeCycle(); - + locationSharing.setOnPreferenceChangeListener((buttonView, newValue) -> { +// PrefUtils.storeEnableSharingLocalization(getApplicationContext(), (Boolean) isChecked); +// Toast.makeText(getApplicationContext(), Boolean.toString(PrefUtils.isEnableSharingLocalization(getApplicationContext())), Toast.LENGTH_LONG).show(); + ((MapActivity)getActivity()).handleBackgroundTaskLifeCycle((Boolean) newValue); return true; }); } @@ -64,15 +94,22 @@ public class SharingFragment extends PreferenceFragment { return view; } + public String getListPreferenceValue(String key){ + ListPreference lp = (ListPreference) findPreference(key); + return (String)lp.getEntry(); + + } protected void updateListPreference(ListPreference lp,Object newValue,String storageKey){ CharSequence [] entries = lp.getEntries(); Set defaultEntries = new HashSet(Arrays.asList(entries)); SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); + Set manualStatusSet = sharedPref.getStringSet(storageKey,defaultEntries); manualStatusSet.add((String) newValue); String [] manualStatusArr = manualStatusSet.toArray(new String[0]); Arrays.sort(manualStatusArr); setListPreferenceData(lp.getKey(),manualStatusArr); + SharedPreferences.Editor editor = sharedPref.edit(); editor.putStringSet(storageKey,manualStatusSet); editor.apply(); @@ -84,7 +121,7 @@ public class SharingFragment extends PreferenceFragment { CharSequence[] entryValues = new CharSequence [entries.length]; for (int i = 0; i < entries.length; i++){ - entryValues[i] = Integer.toString(i+1); + entryValues[i] = Integer.toString(i); } lp.setDefaultValue("1"); 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 2280dd4..5c23701 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 @@ -44,7 +44,7 @@ public class Coordinate extends BaseResponse { @SerializedName("label") private String label; - public Coordinate (Double latitude, Double longitude, Double altitude, String label, String userId) { + public Coordinate (Double latitude, Double longitude, Double altitude, String label, String userId, String displayMode) { //if (!latitudeRange.contains(latitude)) throw new IllegalArgumentException("Inappropriate latitude value" + latitude); //if (!longtitudeRange.contains(longitude)) throw new IllegalArgumentException("Inappropriate longitude value" + longitude); @@ -53,6 +53,7 @@ public class Coordinate extends BaseResponse { this.altitude = altitude; this.label = label; this.userId = userId; + this.displayMode = displayMode; } public Coordinate (Double latitude) { 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 2412286..bf499d5 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 @@ -283,8 +283,10 @@ public class BackgroundLocalizationService extends Service { latitude, longitude, altitude, - PrefUtils.getUserFirstName(getApplicationContext()) + " " + PrefUtils.getUserLastName(getApplicationContext()), - PrefUtils.getUserId(getApplicationContext()) + PrefUtils.getUserFirstName(getApplicationContext()) + " " + PrefUtils.getUserLastName(getApplicationContext()) + " " + PrefUtils.getUserStatus(getApplicationContext()), + PrefUtils.getUserId(getApplicationContext()), + PrefUtils.getLocationLevel(getApplicationContext()) + ); 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 f6b7d13..8dc795a 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 @@ -2,8 +2,10 @@ package com.uam.wmi.findmytutor.utils; import android.content.Context; import android.content.SharedPreferences; +import android.preference.ListPreference; +import android.preference.PreferenceFragment; import android.util.Log; - +import com.uam.wmi.findmytutor.activity.SharingFragment; import com.auth0.android.jwt.Claim; import com.auth0.android.jwt.JWT; @@ -15,7 +17,7 @@ public class PrefUtils { } public static SharedPreferences getSharedPreferences(Context context) { - return context.getSharedPreferences("APP_PREF", Context.MODE_PRIVATE); + return context.getSharedPreferences("com.uam.wmi.findmytutor_preferences", Context.MODE_PRIVATE); } @@ -55,7 +57,12 @@ public class PrefUtils { public static String getUserStatus(Context context) { - return getSharedPreferences(context).getString("USER_STATUS", "Android"); + return getSharedPreferences(context).getString("status_entry", "Available"); + } + public static void storeStatus(Context context, String status){ + SharedPreferences.Editor editor = getSharedPreferences(context).edit(); + editor.putString("status_entry", status); + editor.apply(); } public static void storeIsTutor(Context applicationContext, boolean isTutor) { @@ -79,12 +86,20 @@ public class PrefUtils { } public static boolean isEnableSharingLocalization(Context context) { - return getSharedPreferences(context).getBoolean("IS_ENABLE_SHARING_LOCALIZATION", false); + return getSharedPreferences(context).getBoolean("key_sharing_enabled", false); } public static void storeEnableSharingLocalization(Context context,Boolean isChecked) { SharedPreferences.Editor editor = getSharedPreferences(context).edit(); - editor.putBoolean("IS_ENABLE_SHARING_LOCALIZATION", isChecked); + editor.putBoolean("key_sharing_enabled", isChecked); + editor.apply(); + } + public static String getLocationLevel(Context context){ + return getSharedPreferences(context).getString("location_mode", "exact"); + } + public static void storeLocationMode(Context context, String mode){ + SharedPreferences.Editor editor = getSharedPreferences(context).edit(); + editor.putString("location_mode", mode); editor.apply(); } diff --git a/app/src/main/res/layout/pref_sharing.xml b/app/src/main/res/layout/pref_sharing.xml index 4a75c7b..95817ac 100644 --- a/app/src/main/res/layout/pref_sharing.xml +++ b/app/src/main/res/layout/pref_sharing.xml @@ -5,6 +5,7 @@ tools:ignore="MissingDefaultResource" android:layout_width="match_parent" android:layout_height="match_parent"> + - + + + - + + + - - - + \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index c8102e5..60d4559 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -123,6 +123,11 @@ Zaloguj! Niepoprawny format loginu. Lista użytkowników + Wybierz lokalizacje + Nie dodano uprawnień do lokalizacji. + Ta aplikacja potrzebuje uprawnień do lokalizacji. + Ustawienia statusu + Ręczny wybór lokalizacji diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eb46a55..198b7f7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -47,6 +47,8 @@ Sharing Location sharing + Status settings + Manual location override Sharing level Only presence Approximated