diff --git a/app/src/main/java/com/wesaphzt/privatelock/fragments/FragmentSettings.java b/app/src/main/java/com/wesaphzt/privatelock/fragments/FragmentSettings.java
index 5456de0..5289f55 100644
--- a/app/src/main/java/com/wesaphzt/privatelock/fragments/FragmentSettings.java
+++ b/app/src/main/java/com/wesaphzt/privatelock/fragments/FragmentSettings.java
@@ -7,7 +7,9 @@ import androidx.annotation.Nullable;
import android.view.Menu;
import android.view.View;
+import android.widget.Toast;
+import androidx.preference.CheckBoxPreference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
@@ -15,17 +17,26 @@ import com.wesaphzt.privatelock.R;
public class FragmentSettings extends PreferenceFragmentCompat {
- private SharedPreferences prefs;
+ private Context context;
+
+ private CheckBoxPreference cbRunConstant;
+
+ private SharedPreferences sharedPreferences;
+ private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
setHasOptionsMenu(true);
- Context context = getContext();
+ context = getContext();
+
+ sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
//this static call will reset default values only on the first read
PreferenceManager.setDefaultValues(context, R.xml.preferences, false);
+
+ cbRunConstant = (CheckBoxPreference) findPreference("RUN_CONSTANT");
}
@Override
@@ -33,6 +44,24 @@ public class FragmentSettings extends PreferenceFragmentCompat {
super.onCreate(savedInstanceState);
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
+ }
+
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@@ -41,6 +70,16 @@ public class FragmentSettings extends PreferenceFragmentCompat {
//bg color
view.setBackgroundColor(getResources().getColor(R.color.white));
+
+ sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ if(key.equals("RUN_CONSTANT") && cbRunConstant.isChecked()) {
+ Toast.makeText(context, getString(R.string.settings_restart_service_toast), Toast.LENGTH_LONG).show();
+ }
+ }
+ };
+ sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
@Override
diff --git a/app/src/main/java/com/wesaphzt/privatelock/receivers/BootReceiver.java b/app/src/main/java/com/wesaphzt/privatelock/receivers/BootReceiver.java
index 7c27e60..115483a 100644
--- a/app/src/main/java/com/wesaphzt/privatelock/receivers/BootReceiver.java
+++ b/app/src/main/java/com/wesaphzt/privatelock/receivers/BootReceiver.java
@@ -16,7 +16,7 @@ public class BootReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);;
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if(prefs.getBoolean("START_ON_BOOT", false)) {
Intent i = new Intent(context, LockService.class);
diff --git a/app/src/main/java/com/wesaphzt/privatelock/service/LockService.java b/app/src/main/java/com/wesaphzt/privatelock/service/LockService.java
index 7dc19eb..e68c528 100644
--- a/app/src/main/java/com/wesaphzt/privatelock/service/LockService.java
+++ b/app/src/main/java/com/wesaphzt/privatelock/service/LockService.java
@@ -83,18 +83,18 @@ public class LockService extends JobIntentService {
String action = intent.getAction();
LockWidgetProvider lockWidgetProvider = new LockWidgetProvider();
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
switch (action) {
-
case ACTION_START_FOREGROUND_SERVICE:
- presenceReceiver = new PresenceReceiver();
-
- IntentFilter intentFilter = new IntentFilter(Intent.ACTION_USER_PRESENT);
- intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
- registerReceiver(presenceReceiver, intentFilter);
+ if(! prefs.getBoolean("RUN_CONSTANT", false)) {
+ presenceReceiver = new PresenceReceiver();
+ IntentFilter intentFilter = new IntentFilter(Intent.ACTION_USER_PRESENT);
+ intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
+ registerReceiver(presenceReceiver, intentFilter);
+ }
//------------------------------------------------------------------------------------------
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
try {
SENSITIVITY = prefs.getInt(MainActivity.PREFS_THRESHOLD, DEFAULT_SENSITIVITY);
} catch (Exception e) {
@@ -134,7 +134,9 @@ public class LockService extends JobIntentService {
case ACTION_STOP_FOREGROUND_SERVICE:
try {
- unregisterReceiver(presenceReceiver);
+ if(! prefs.getBoolean("RUN_CONSTANT", false)) {
+ unregisterReceiver(presenceReceiver);
+ }
mSensorManager.unregisterListener(activeListener);
disabled = true;
@@ -145,6 +147,9 @@ public class LockService extends JobIntentService {
PauseReceiver.isRunning = false;
}
} catch (Exception e) {
+ if(! prefs.getBoolean("RUN_CONSTANT", false)) {
+ unregisterReceiver(presenceReceiver);
+ }
disabled = true;
mInitialized = false;
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 93248c1..ca2b24a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -62,6 +62,9 @@
Bug report image
+
+ If service is running, restart for setting to take effect.
+
Bitcoin image
Litecoin image
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 4ef18b6..c60b8a6 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -2,20 +2,25 @@
+
+
+
+
+
-
+ android:title="Pause length" />
-
-
\ No newline at end of file