From ddf8b56831e9c197d3652cecd8ebd179f9223ec5 Mon Sep 17 00:00:00 2001 From: Harsha Raghu Date: Sun, 14 Apr 2024 02:35:17 +0530 Subject: [PATCH 1/2] feat: Add max brightness toggle --- .../viritualisres/phonevr/ALVRActivity.java | 34 +++++++++++++++---- .../app/src/main/res/menu/settings_menu.xml | 4 +++ .../app/src/main/res/values/strings.xml | 1 + 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/ALVRActivity.java b/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/ALVRActivity.java index 1724d0dc..470a0780 100644 --- a/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/ALVRActivity.java +++ b/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/ALVRActivity.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.Uri; import android.opengl.GLSurfaceView; @@ -26,6 +27,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; +import java.util.Objects; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; @@ -43,10 +45,10 @@ public class ALVRActivity extends AppCompatActivity private GLSurfaceView glView; - private BatteryMonitor bMonitor = new BatteryMonitor(this); + private final BatteryMonitor bMonitor = new BatteryMonitor(this); - public class BatteryMonitor extends BroadcastReceiver { - private BatteryLevelListener listener; + public static class BatteryMonitor extends BroadcastReceiver { + private final BatteryLevelListener listener; public BatteryMonitor(BatteryLevelListener listener) { this.listener = listener; @@ -65,7 +67,7 @@ public void stopMonitoring(Context context) { @Override public void onReceive(Context context, Intent intent) { - if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) { + if (Objects.equals(intent.getAction(), Intent.ACTION_BATTERY_CHANGED)) { // Get the current battery level and scale int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100); @@ -122,9 +124,13 @@ public void onCreate(Bundle savedInstance) { }); // Forces screen to max brightness. - WindowManager.LayoutParams layout = getWindow().getAttributes(); - layout.screenBrightness = 1.f; - getWindow().setAttributes(layout); + // get setting max_brightness boolean and set brightness to max if required + SharedPreferences prefs = getSharedPreferences("settings", MODE_PRIVATE); + if (prefs.getBoolean("max_brightness", true)) { + WindowManager.LayoutParams layout = getWindow().getAttributes(); + layout.screenBrightness = 1.f; + getWindow().setAttributes(layout); + } // Prevents screen from dimming/locking. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); @@ -205,6 +211,13 @@ public void showSettings(View view) { PopupMenu popup = new PopupMenu(this, view); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.menu.settings_menu, popup.getMenu()); + + MenuItem toggleBrightness = popup.getMenu().findItem(R.id.max_brightness_toggle); + // get setting max_brightness boolean from settings + SharedPreferences prefs = getSharedPreferences("settings", MODE_PRIVATE); + boolean isChecked = prefs.getBoolean("max_brightness", true); + toggleBrightness.setChecked(isChecked); + popup.setOnMenuItemClickListener(this); popup.show(); } @@ -214,6 +227,13 @@ public boolean onMenuItemClick(MenuItem item) { if (item.getItemId() == R.id.switch_viewer) { switchViewerNative(); return true; + } else if (item.getItemId() == R.id.max_brightness_toggle) { + // Save app setting boolean max_brightness == true + item.setChecked(!item.isChecked()); + SharedPreferences.Editor editor = getSharedPreferences("settings", MODE_PRIVATE).edit(); + editor.putBoolean("max_brightness", item.isChecked()); + editor.apply(); + return true; } return false; } diff --git a/code/mobile/android/PhoneVR/app/src/main/res/menu/settings_menu.xml b/code/mobile/android/PhoneVR/app/src/main/res/menu/settings_menu.xml index c8d3463e..602c33c8 100644 --- a/code/mobile/android/PhoneVR/app/src/main/res/menu/settings_menu.xml +++ b/code/mobile/android/PhoneVR/app/src/main/res/menu/settings_menu.xml @@ -4,4 +4,8 @@ android:layout_height="match_parent"> + \ No newline at end of file diff --git a/code/mobile/android/PhoneVR/app/src/main/res/values/strings.xml b/code/mobile/android/PhoneVR/app/src/main/res/values/strings.xml index 66a07ca9..ab4def96 100644 --- a/code/mobile/android/PhoneVR/app/src/main/res/values/strings.xml +++ b/code/mobile/android/PhoneVR/app/src/main/res/values/strings.xml @@ -38,4 +38,5 @@ Switch Cardboard viewer + Max Brightness From 55447c4649223177241a563636ec2cf15ac6b841 Mon Sep 17 00:00:00 2001 From: Harsha Raghu Date: Sun, 14 Apr 2024 07:29:17 +0530 Subject: [PATCH 2/2] test: Add popup and lookingFrontDown tests --- .../viritualisres/phonevr/ALVRActivityTest.kt | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/code/mobile/android/PhoneVR/app/src/androidTest/java/viritualisres/phonevr/ALVRActivityTest.kt b/code/mobile/android/PhoneVR/app/src/androidTest/java/viritualisres/phonevr/ALVRActivityTest.kt index 27da267a..5b8975b2 100644 --- a/code/mobile/android/PhoneVR/app/src/androidTest/java/viritualisres/phonevr/ALVRActivityTest.kt +++ b/code/mobile/android/PhoneVR/app/src/androidTest/java/viritualisres/phonevr/ALVRActivityTest.kt @@ -8,7 +8,9 @@ import androidx.test.core.graphics.writeToTestStorage import androidx.test.espresso.Espresso.onView import androidx.test.espresso.NoMatchingViewException import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.action.ViewActions.pressBack import androidx.test.espresso.matcher.ViewMatchers.isRoot +import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.ext.junit.rules.activityScenarioRule import androidx.test.platform.app.InstrumentationRegistry @@ -154,6 +156,10 @@ class ALVRActivityTest : PVRInstrumentationBase() { sendADBCommand("sensor set acceleration 0:0:9.77622") } + private fun lookFrontDown() { + sendADBCommand("sensor set acceleration 9.3:0:3.8") + } + private fun rotateAVDLandscape() { // set gravity acceleration g in Y Direction - real Mock sendADBCommand("sensor set acceleration 9.77622:0:0") @@ -189,12 +195,23 @@ class ALVRActivityTest : PVRInstrumentationBase() { } takeScreenshot().writeToTestStorage("${javaClass.simpleName}_${nameRule.methodName}") - lookDown() + onView(withId(R.id.ui_settings_button)).perform(click()) + sleep(1000) + takeScreenshot().writeToTestStorage("${javaClass.simpleName}_${nameRule.methodName}_Popup") + onView(isRoot()).perform(pressBack()) // Close popup + + lookFrontDown() waitForADBTelnetServer() // Wait for ADBTelnetServer to execute rotation sleep(1000) + takeScreenshot() + .writeToTestStorage("${javaClass.simpleName}_${nameRule.methodName}_LookingFrontDown") + lookDown() + waitForADBTelnetServer() // Wait for ADBTelnetServer to execute rotation + sleep(1000) takeScreenshot() .writeToTestStorage("${javaClass.simpleName}_${nameRule.methodName}_LookingDown") + // shutdownADBTelnetServer() } /*