diff --git a/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/AppConfig.kt b/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/AppConfig.kt index fb058f1c..37d2e253 100644 --- a/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/AppConfig.kt +++ b/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/AppConfig.kt @@ -343,6 +343,10 @@ class AppConfig(ctx: Context) : ConfigStore { get() = default_prefs.getBoolean(PREFS_KEY_USE_CAMERA, true) set(value) = default_prefs.edit().putBoolean(PREFS_KEY_USE_CAMERA, value).apply() + var keepScreenOn: Boolean + get() = default_prefs.getBoolean(PREFS_KEY_SCREEN_ALWAYS_ON, true) + set(value) = default_prefs.edit().putBoolean(PREFS_KEY_SCREEN_ALWAYS_ON, value).apply() + val hideNames: Boolean get() = default_prefs.getBoolean(PREFS_KEY_HIDE_NAMES, false) @@ -452,5 +456,6 @@ class AppConfig(ctx: Context) : ConfigStore { val PREFS_KEY_KIOSK_MODE = "pref_kiosk_mode" val PREFS_KEY_MULTI_EVENT_MODE = "multi_event_mode" private const val PREFS_KEY_KNOWN_LIVE_EVENT_SLUGS = "cache_known_live_event_slugs" + private const val PREFS_KEY_SCREEN_ALWAYS_ON = "pref_screen_always_on" } } diff --git a/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/PretixScan.kt b/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/PretixScan.kt index 56830817..63024827 100644 --- a/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/PretixScan.kt +++ b/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/PretixScan.kt @@ -1,9 +1,14 @@ package eu.pretix.pretixscan.droid +import android.app.Activity +import android.app.Application import android.database.sqlite.SQLiteException import android.os.Build +import android.os.Bundle +import android.view.WindowManager import androidx.appcompat.app.AppCompatDelegate import androidx.multidex.MultiDexApplication +import androidx.preference.PreferenceManager import app.cash.sqldelight.db.QueryResult import app.cash.sqldelight.driver.android.AndroidSqliteDriver import eu.pretix.libpretixsync.check.AsyncCheckProvider @@ -24,7 +29,7 @@ import net.zetetic.database.sqlcipher.SQLiteDatabaseHook import java.util.concurrent.locks.ReentrantLock -class PretixScan : MultiDexApplication() { +class PretixScan : MultiDexApplication(), Application.ActivityLifecycleCallbacks { val fileStorage = AndroidFileStorage(this) val syncLock = ReentrantLock() lateinit var connectivityHelper: ConnectivityHelper @@ -111,7 +116,7 @@ class PretixScan : MultiDexApplication() { } // Uncomment LogSqliteDriver for verbose logging - val driver = if(BuildConfig.DEBUG) { + val driver = if (BuildConfig.DEBUG) { // LogSqliteDriver(androidDriver) { // Log.d("SQLDelight", it) // } @@ -135,6 +140,9 @@ class PretixScan : MultiDexApplication() { } connectivityHelper = ConnectivityHelper(AppConfig(this)) + + + registerActivityLifecycleCallbacks(this) } fun getCheckProvider(conf: AppConfig): TicketCheckProvider { @@ -162,6 +170,35 @@ class PretixScan : MultiDexApplication() { } } + override fun onActivityCreated( + activity: Activity, + savedInstanceState: Bundle? + ) { + } + + override fun onActivityDestroyed(activity: Activity) {} + + override fun onActivityPaused(activity: Activity) {} + + override fun onActivityResumed(activity: Activity) { + + if (AppConfig(this).keepScreenOn) { + activity.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + activity.window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } + } + + override fun onActivitySaveInstanceState( + activity: Activity, + outState: Bundle + ) { + } + + override fun onActivityStarted(activity: Activity) {} + + override fun onActivityStopped(activity: Activity) {} + companion object { /* * It is not a security problem that the keystore password is hardcoded in plain text. diff --git a/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/ui/Utils.kt b/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/ui/Utils.kt index 00bd5065..07c00a7f 100644 --- a/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/ui/Utils.kt +++ b/pretixscan/app/src/main/java/eu/pretix/pretixscan/droid/ui/Utils.kt @@ -64,3 +64,4 @@ fun wipeApp(ctx: Context, shouldRevoke: Boolean = false) { } } } + diff --git a/pretixscan/app/src/main/res/layout/activity_event_config.xml b/pretixscan/app/src/main/res/layout/activity_event_config.xml index b22a253a..7fffd344 100644 --- a/pretixscan/app/src/main/res/layout/activity_event_config.xml +++ b/pretixscan/app/src/main/res/layout/activity_event_config.xml @@ -6,7 +6,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" - android:keepScreenOn="true" tools:context=".ui.EventConfigActivity"> + android:fitsSystemWindows="true"> + android:fitsSystemWindows="true"> Schließen Über diese App Autoren und Lizenzen + Bildschirm wach halten Geräte-Kamera benutzen Offline scannen Offline-Modus automatisch steuern diff --git a/pretixscan/app/src/main/res/values/strings.xml b/pretixscan/app/src/main/res/values/strings.xml index 731d3e44..f9ec5f14 100644 --- a/pretixscan/app/src/main/res/values/strings.xml +++ b/pretixscan/app/src/main/res/values/strings.xml @@ -79,6 +79,7 @@ User interface About this app Author and licenses + Keep display awake Use device camera Offline scanning Automatically turn offline mode on and off diff --git a/pretixscan/app/src/main/res/xml/preferences.xml b/pretixscan/app/src/main/res/xml/preferences.xml index d8b42021..ed30152b 100644 --- a/pretixscan/app/src/main/res/xml/preferences.xml +++ b/pretixscan/app/src/main/res/xml/preferences.xml @@ -32,6 +32,10 @@ android:title="@string/settings_label_auto_switch" /> + +