[#355] Lock screen to portrait

- Adds capability to customize the screen lock via gradle.properties to enable it while developing or testing the app UI easily
- Closes #355
This commit is contained in:
Honza Rychnovský 2023-11-08 10:47:31 +01:00 committed by GitHub
parent 692e5fc0d2
commit a15bea738f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 1 deletions

View File

@ -103,6 +103,7 @@ tasks {
"ZCASH_SUPPORT_EMAIL_ADDRESS" to "support@electriccoin.co",
"IS_SECURE_SCREEN_PROTECTION_ACTIVE" to "true",
"IS_DARK_MODE_ENABLED" to "false",
"IS_SCREEN_ROTATION_ENABLED" to "false",
"ZCASH_DEBUG_KEYSTORE_PATH" to "",
"ZCASH_RELEASE_KEYSTORE_PATH" to "",

View File

@ -64,10 +64,11 @@ ZCASH_SUPPORT_EMAIL_ADDRESS=support@electriccoin.co
# Recommended protection of screens with sensitive data.
# It is enabled by default to protect the developers from revealing their wallet secrets by mistake.
IS_SECURE_SCREEN_PROTECTION_ACTIVE=true
# Forcibly turn on or off the UI dark mode support. If enabled, then the device's dark mode system setting value is
# applied.
IS_DARK_MODE_ENABLED=false
# Set whether the screen rotation is enabled or the screen orientation is locked in the portrait mode.
IS_SCREEN_ROTATION_ENABLED=false
# Set keystore details to enable build signing. Typically these
# are overridden via ~/.gradle/gradle.properties to allow secure injection.

View File

@ -64,6 +64,15 @@ androidComponents {
comment = "Whether is the SecureScreen sensitive data protection enabled"
)
)
// To configure screen orientation in runtime
variant.buildConfigFields.put(
"IS_SCREEN_ROTATION_ENABLED",
BuildConfigField(
type = "boolean",
value = project.property("IS_SCREEN_ROTATION_ENABLED").toString(),
comment = "Whether is the screen rotation enabled, otherwise, it's locked in the portrait mode"
)
)
}
}

View File

@ -1,5 +1,7 @@
package co.electriccoin.zcash.ui
import android.annotation.SuppressLint
import android.content.pm.ActivityInfo
import android.os.Bundle
import android.os.SystemClock
import androidx.activity.ComponentActivity
@ -66,6 +68,8 @@ class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setAllowedScreenOrientation()
setupSplashScreen()
setupUiContent()
@ -73,6 +77,18 @@ class MainActivity : ComponentActivity() {
monitorForBackgroundSync()
}
/**
* Sets whether the screen rotation is enabled or screen orientation is locked in the portrait mode.
*/
@SuppressLint("SourceLockedOrientationActivity")
private fun setAllowedScreenOrientation() {
requestedOrientation = if (BuildConfig.IS_SCREEN_ROTATION_ENABLED) {
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
} else {
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
}
private fun setupSplashScreen() {
val splashScreen = installSplashScreen()
val start = SystemClock.elapsedRealtime().milliseconds