]> hydra-www.ietfng.org Git - acmetensortoys-ctfws-android/commitdiff
Change screen-always-on behavior
authorNathaniel Wesley Filardo <nwfilardo@gmail.com>
Mon, 28 Feb 2022 21:52:44 +0000 (21:52 +0000)
committerNathaniel Wesley Filardo <nwfilardo@gmail.com>
Wed, 2 Mar 2022 23:39:37 +0000 (23:39 +0000)
In particular, request it only when there is a game in progress and move
the toggle from the main menu to settings.

mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/Activity.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/activity/main/CtFwSDisplay.java
mobile/src/main/res/menu/mainmenu.xml
mobile/src/main/res/values/strings.xml
mobile/src/main/res/xml/preferences.xml

index c1ae9b7a92b3f93a2fa3f454ccf7b885bf1da0d5..c4e5c719f4c4dbbdfff8d2bac66e26c1c4d1de5d 100644 (file)
@@ -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);
index 1571b3256ada8dc41fee65c0871271a4bfbfa62f..c68aa75f66fa047e6c42aa930806da0f610d6547 100644 (file)
@@ -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() {
index d7121fb1af0d2ea4d29147d86fe593655b9a1d81..efb5a5eafea9d0de7553f83a13e3ec53e3f13bad 100644 (file)
@@ -3,13 +3,6 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <item
-        android:id="@+id/mainmenu_screenwake"
-        android:checkable="true"
-        android:enabled="true"
-        android:title="@string/menutext_screenwake"
-        android:visible="true"
-        app:showAsAction="never" />
     <item
         android:id="@+id/mainmenu_hand"
         android:icon="@drawable/ic_library_books_24dp"
index a29cdfb2687b1152dff0d927043fed13cd79c1d0..addc715d859a01ad9c638e1939d1209c77bd13f9 100644 (file)
@@ -53,7 +53,6 @@
     <string name="menutext_prf">Settings</string>
     <string name="menutext_quit">Quit</string>
     <string name="menutext_reconn">Reconnect</string>
-    <string name="menutext_screenwake">Keep Screen On</string>
     <string name="menutext_search">Search</string>
 
     <string name="mqtt_state_label">Server State:</string>
@@ -66,6 +65,8 @@
     <string name="preftext_mqtt_def">Use Default MQTT Server</string>
     <string name="preftext_mqtt_prefcat">MQTT Server</string>
     <string name="preftext_notif_prefcat">Notification Settings</string>
+    <string name="preftext_screen_prefcat">Screen and Window Behavior</string>
+    <string name="preftext_screen_on_when_game">Stay awake in foreground during games</string>
     <string name="preftext_vibrate_jb">Vibrate on Jailbreak?</string>
     <string name="preftext_vibrate_flag">Vibrate on Flag Capture?</string>
     <string name="preftext_vibrate_mesg">Vibrate on Message?</string>
index 8e7540fdf089b7119b0c4e22da9bb546642c4aff..7669671cbcb62a1ef500af28790cb24269596de8 100644 (file)
         app:isPreferenceVisible="false"/>\r
 \r
     </PreferenceCategory>\r
-    <PreferenceCategory android:title="@string/preftext_notif_prefcat">\r
+    <PreferenceCategory android:title="@string/preftext_screen_prefcat">
+
+        <CheckBoxPreference
+            android:defaultValue="false"
+            android:key="screen_on_when_game"
+            android:title="@string/preftext_screen_on_when_game" />
 \r
+    </PreferenceCategory>
+    <PreferenceCategory android:title="@string/preftext_notif_prefcat">
 \r
     <CheckBoxPreference\r
         android:defaultValue="true"\r