From 1cb92577c444bf988db1077b6e7d9bcbf5b4cd8d Mon Sep 17 00:00:00 2001 From: Harsha Raghu Date: Sun, 14 Apr 2024 06:10:07 +0530 Subject: [PATCH 1/2] feat: Remember server selection --- .../PhoneVR/app/src/main/AndroidManifest.xml | 7 ++-- .../viritualisres/phonevr/ALVRActivity.java | 10 ++++++ .../viritualisres/phonevr/InitActivity.kt | 35 ++++++++++++++++++- .../viritualisres/phonevr/SettingsActivity.kt | 11 ++++++ .../app/src/main/res/layout/activity_init.xml | 14 ++++++++ .../src/main/res/layout/activity_settings.xml | 17 ++++++++- .../app/src/main/res/menu/settings_menu.xml | 2 ++ .../app/src/main/res/values/strings.xml | 2 ++ 8 files changed, 93 insertions(+), 5 deletions(-) diff --git a/code/mobile/android/PhoneVR/app/src/main/AndroidManifest.xml b/code/mobile/android/PhoneVR/app/src/main/AndroidManifest.xml index b761faf7..94ffd5b1 100644 --- a/code/mobile/android/PhoneVR/app/src/main/AndroidManifest.xml +++ b/code/mobile/android/PhoneVR/app/src/main/AndroidManifest.xml @@ -66,7 +66,8 @@ android:resource="@xml/provider_paths_app" /> + android:name=".MainActivity" + android:launchMode="singleTop" /> - + android:theme="@style/Theme.AppCompat.NoActionBar" + android:launchMode="singleTop" /> \ No newline at end of file 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..5d08f610 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 @@ -214,6 +214,16 @@ public boolean onMenuItemClick(MenuItem item) { if (item.getItemId() == R.id.switch_viewer) { switchViewerNative(); return true; + } else if (item.getItemId() == R.id.switch_server) { + // remove alvr_server prefs + SharedPreferences.Editor editor = getSharedPreferences("prefs", MODE_PRIVATE).edit(); + editor.remove("alvr_server"); + editor.apply(); + + // start InitActivity and clear back history + Intent intent = new Intent(this, InitActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); } return false; } diff --git a/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/InitActivity.kt b/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/InitActivity.kt index 2eb8f432..a0f4b4a4 100644 --- a/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/InitActivity.kt +++ b/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/InitActivity.kt @@ -3,13 +3,13 @@ package viritualisres.phonevr import android.content.Intent import android.os.Bundle -import android.text.Html.FROM_HTML_MODE_LEGACY import android.text.method.LinkMovementMethod import android.text.util.Linkify import android.util.Log import android.view.View import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.SwitchCompat import androidx.core.text.HtmlCompat class InitActivity : AppCompatActivity() { @@ -32,14 +32,47 @@ class InitActivity : AppCompatActivity() { tvBody.text = String.format(resources.getString(R.string.phonevr_support_packages), result) tvBody.movementMethod = LinkMovementMethod.getInstance() Linkify.addLinks(tvBody, Linkify.WEB_URLS) + + val prefs = getSharedPreferences("prefs", MODE_PRIVATE) + val swVRemember = findViewById(R.id.remeber_server) + swVRemember.isChecked = prefs.getBoolean("remember", false) + + // check if alvr_server setting exists == first run + // if user has chosen to show server selection menu from respective main activities, + // ALVRActivity or MainActivity + // Not kept in Resume() to prevent looping when coming back from AlvrActivity, or others + if (prefs.contains("alvr_server") && prefs.getBoolean("remember", false)) { + var intent = Intent(this, ALVRActivity::class.java) + if (!prefs.getBoolean("alvr_server", true)) { + intent = Intent(this, MainActivity::class.java) + } + startActivity(intent) + } + + swVRemember.setOnCheckedChangeListener { _, isChecked -> + prefs.edit().putBoolean("remember", isChecked).apply() + if (!isChecked) { + prefs.edit().remove("alvr_server").apply() + } + } } fun btOnClickALVRStreamer(view: View) { + val prefs = getSharedPreferences("prefs", MODE_PRIVATE) + // Save choice after first open. alvr_server as boolean + if (prefs.getBoolean("remember", false)) + prefs.edit().putBoolean("alvr_server", true).apply() + val intent = Intent(this, ALVRActivity::class.java) startActivity(intent) } fun btOnClickPVRStreamer(view: View) { + val prefs = getSharedPreferences("prefs", MODE_PRIVATE) + + if (prefs.getBoolean("remember", false)) + prefs.edit().putBoolean("alvr_server", false).apply() + val intent = Intent(this, MainActivity::class.java) startActivity(intent) } diff --git a/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/SettingsActivity.kt b/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/SettingsActivity.kt index b8a731c3..fdd360a1 100644 --- a/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/SettingsActivity.kt +++ b/code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/SettingsActivity.kt @@ -105,6 +105,17 @@ class SettingsActivity : AppCompatActivity() { OpenFileWithIntent(File(getExternalFilesDir(null).toString() + "/PVR/pvrlog.txt")) } } + + val btSwitchServer: Button = findViewById(R.id.btSwitchServer) + btSwitchServer.setOnClickListener { + val prefs = getSharedPreferences("prefs", MODE_PRIVATE) + prefs.edit().remove("alvr_server").apply() + + // Start initActivity and let user choose the server again. Clear back history + val intent = Intent(this@SettingsActivity, InitActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + startActivity(intent) + } } /* * Zips a file at a location and places the resulting zip file at the toLocation diff --git a/code/mobile/android/PhoneVR/app/src/main/res/layout/activity_init.xml b/code/mobile/android/PhoneVR/app/src/main/res/layout/activity_init.xml index 087b8b75..4a7e52e4 100644 --- a/code/mobile/android/PhoneVR/app/src/main/res/layout/activity_init.xml +++ b/code/mobile/android/PhoneVR/app/src/main/res/layout/activity_init.xml @@ -92,4 +92,18 @@ app:layout_constraintTop_toTopOf="@+id/alvr_streamer" app:srcCompat="@mipmap/ic_launcher_alvr" /> + + \ No newline at end of file diff --git a/code/mobile/android/PhoneVR/app/src/main/res/layout/activity_settings.xml b/code/mobile/android/PhoneVR/app/src/main/res/layout/activity_settings.xml index 82fb55db..28fb6f64 100644 --- a/code/mobile/android/PhoneVR/app/src/main/res/layout/activity_settings.xml +++ b/code/mobile/android/PhoneVR/app/src/main/res/layout/activity_settings.xml @@ -288,6 +288,21 @@ android:text="@string/share_logs"/> +