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