From: Nathaniel Wesley Filardo Date: Mon, 28 Feb 2022 21:52:44 +0000 (+0000) Subject: Change screen-always-on behavior X-Git-Url: https://hydra-www.ietfng.org/gitweb/?a=commitdiff_plain;h=5b129118141385d2f9109b2853ae4ac36ffdf3c6;p=acmetensortoys-ctfws-android Change screen-always-on behavior In particular, request it only when there is a game in progress and move the toggle from the main menu to settings. --- diff --git a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/Activity.java b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/Activity.java index c1ae9b7..c4e5c71 100644 --- a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/Activity.java +++ b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/Activity.java @@ -114,6 +114,8 @@ public class Activity extends CtFwSActivityBase { public void onStart() { Log.d(TAG, "onStart"); super.onStart(); + + CtFwSDisplay.resetWindow(this); } @Override @@ -201,14 +203,6 @@ public class Activity extends CtFwSActivityBase { case R.id.mainmenu_judge: startActivity(new Intent(this, Activity.class)); return true; - case R.id.mainmenu_screenwake: - boolean checked = mi.isChecked(); - if (checked) { - getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } else { - getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - mi.setChecked(!checked); case R.id.mainmenu_reconn: if (mSrvBinder != null) { mSrvBinder.connect(true); diff --git a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/CtFwSDisplay.java b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/CtFwSDisplay.java index 1571b32..c68aa75 100644 --- a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/CtFwSDisplay.java +++ b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/CtFwSDisplay.java @@ -1,6 +1,7 @@ package com.acmetensortoys.ctfwstimer.activity.main; import android.app.Activity; +import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Color; import android.os.Build; @@ -10,10 +11,13 @@ import android.text.Spanned; import android.text.format.DateUtils; import android.util.Log; import android.view.View; +import android.view.WindowManager; import android.widget.Chronometer; import android.widget.ProgressBar; import android.widget.TextView; +import androidx.preference.PreferenceManager; + import com.acmetensortoys.ctfwstimer.R; import com.acmetensortoys.ctfwstimer.lib.CtFwSGameStateManager; import com.acmetensortoys.ctfwstimer.utils.AndroidResourceUtils; @@ -199,6 +203,13 @@ public class CtFwSDisplay implements CtFwSGameStateManager.Observer { } // Otherwise, it's game on! + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mAct); + if (sp.getBoolean("screen_on_when_game", false)) { + Log.d("CtFwS", "Requesting screen on"); + mAct.runOnUiThread(() -> mAct.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON)); + } + // Upper line text { final TextView tv_jb = mAct.findViewById(R.id.tv_jailbreak); @@ -306,9 +317,21 @@ public class CtFwSDisplay implements CtFwSGameStateManager.Observer { } } + private void resetWindow() { + mAct.runOnUiThread(() -> resetWindow(mAct)); + } + + public static void resetWindow(Activity act) { + Log.d("CtFwS", "window reset"); + act.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); + } + private void doReset() { Log.d("CtFwS", "Display Reset"); + resetWindow(); + { final Chronometer ch = mAct.findViewById(R.id.ch_jailbreak); ch.post(new Runnable() { diff --git a/mobile/src/main/res/menu/mainmenu.xml b/mobile/src/main/res/menu/mainmenu.xml index d7121fb..efb5a5e 100644 --- a/mobile/src/main/res/menu/mainmenu.xml +++ b/mobile/src/main/res/menu/mainmenu.xml @@ -3,13 +3,6 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> - Settings Quit Reconnect - Keep Screen On Search Server State: @@ -66,6 +65,8 @@ Use Default MQTT Server MQTT Server Notification Settings + Screen and Window Behavior + Stay awake in foreground during games Vibrate on Jailbreak? Vibrate on Flag Capture? Vibrate on Message? diff --git a/mobile/src/main/res/xml/preferences.xml b/mobile/src/main/res/xml/preferences.xml index 8e7540f..7669671 100644 --- a/mobile/src/main/res/xml/preferences.xml +++ b/mobile/src/main/res/xml/preferences.xml @@ -18,8 +18,15 @@ app:isPreferenceVisible="false"/> - + + + + +