feat: Add keep screen on setting for player page
This commit is contained in:
@@ -2,6 +2,7 @@ package com.antoniegil.astronia.ui.page
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.view.WindowManager
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.animation.fadeIn
|
||||
@@ -67,8 +68,15 @@ private fun PlayerPageContent(
|
||||
|
||||
DisposableEffect(Unit) {
|
||||
activity?.window?.setSustainedPerformanceMode(true)
|
||||
val keepScreenOn = com.antoniegil.astronia.util.SettingsManager.getKeepScreenOn(context)
|
||||
if (keepScreenOn) {
|
||||
activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||
}
|
||||
onDispose {
|
||||
activity?.window?.setSustainedPerformanceMode(false)
|
||||
if (keepScreenOn) {
|
||||
activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -454,7 +462,8 @@ private fun PlayerPageContent(
|
||||
isLocked = uiState.isLocked,
|
||||
onLockChange = { viewModel.setLocked(it) },
|
||||
onEpgClick = onEpgClick,
|
||||
hasEpgData = uiState.channels.find { it.url == uiState.currentChannelUrl }?.epgPrograms?.isNotEmpty() == true
|
||||
hasEpgData = uiState.channels.find { it.url == uiState.currentChannelUrl }?.epgPrograms?.isNotEmpty() == true,
|
||||
epgPrograms = uiState.channels.find { it.url == uiState.currentChannelUrl }?.epgPrograms ?: emptyList()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+14
@@ -50,6 +50,7 @@ fun PlayerSettingsPage(onNavigateBack: () -> Unit) {
|
||||
var autoHideControls by remember { mutableStateOf(SettingsManager.getAutoHideControls(context)) }
|
||||
var enablePictureInPicture by remember { mutableStateOf(SettingsManager.getEnablePip(context)) }
|
||||
var backgroundPlay by remember { mutableStateOf(SettingsManager.getBackgroundPlay(context)) }
|
||||
var keepScreenOn by remember { mutableStateOf(SettingsManager.getKeepScreenOn(context)) }
|
||||
|
||||
Scaffold(
|
||||
modifier = Modifier.fillMaxSize().nestedScroll(scrollBehavior.nestedScrollConnection),
|
||||
@@ -138,6 +139,19 @@ fun PlayerSettingsPage(onNavigateBack: () -> Unit) {
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
item {
|
||||
PreferenceSwitch(
|
||||
title = stringResource(R.string.keep_screen_on),
|
||||
description = stringResource(R.string.keep_screen_on_desc),
|
||||
icon = Icons.Outlined.ScreenLockPortrait,
|
||||
isChecked = keepScreenOn,
|
||||
onCheckedChange = {
|
||||
keepScreenOn = it
|
||||
SettingsManager.setKeepScreenOn(context, it)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,6 +91,9 @@ object SettingsManager {
|
||||
fun getShowPlayerStats(context: Context): Boolean = getInstance(context).getShowPlayerStats()
|
||||
fun setShowPlayerStats(context: Context, value: Boolean) = getInstance(context).setShowPlayerStats(value)
|
||||
|
||||
fun getKeepScreenOn(context: Context): Boolean = getInstance(context).getKeepScreenOn()
|
||||
fun setKeepScreenOn(context: Context, value: Boolean) = getInstance(context).setKeepScreenOn(value)
|
||||
|
||||
fun setPendingNavigation(context: Context, navigation: String) = getInstance(context).setPendingNavigation(navigation)
|
||||
fun getPendingNavigation(context: Context): String = getInstance(context).getPendingNavigation()
|
||||
fun clearPendingNavigation(context: Context) = getInstance(context).clearPendingNavigation()
|
||||
@@ -246,6 +249,9 @@ internal class PreferenceManagerImpl(context: Context) {
|
||||
fun getShowPlayerStats(): Boolean = getBoolean(KEY_SHOW_PLAYER_STATS, false)
|
||||
fun setShowPlayerStats(value: Boolean) = putBoolean(KEY_SHOW_PLAYER_STATS, value)
|
||||
|
||||
fun getKeepScreenOn(): Boolean = getBoolean(KEY_KEEP_SCREEN_ON, true)
|
||||
fun setKeepScreenOn(value: Boolean) = putBoolean(KEY_KEEP_SCREEN_ON, value)
|
||||
|
||||
fun setPendingNavigation(navigation: String) = putString(KEY_PENDING_NAVIGATION, navigation)
|
||||
fun getPendingNavigation(): String = getString(KEY_PENDING_NAVIGATION, "")
|
||||
fun clearPendingNavigation() = remove(KEY_PENDING_NAVIGATION)
|
||||
@@ -341,6 +347,7 @@ internal class PreferenceManagerImpl(context: Context) {
|
||||
private const val KEY_PROXY_HOST = "proxy_host"
|
||||
private const val KEY_PROXY_PORT = "proxy_port"
|
||||
private const val KEY_SHOW_PLAYER_STATS = "show_player_stats"
|
||||
private const val KEY_KEEP_SCREEN_ON = "keep_screen_on"
|
||||
private const val KEY_PENDING_NAVIGATION = "pending_navigation"
|
||||
private const val KEY_AUTO_CHECK_UPDATE = "auto_check_update"
|
||||
private const val KEY_UPDATE_CHANNEL = "update_channel"
|
||||
|
||||
@@ -95,8 +95,8 @@
|
||||
<string name="background_play_battery_hint">需要电池优化豁免权限</string>
|
||||
<string name="battery_configuration">电池配置</string>
|
||||
<string name="battery_configuration_desc">授予电池优化豁免以实现稳定的后台播放</string>
|
||||
<string name="mirror_flip">镜像翻转</string>
|
||||
<string name="mirror_flip_desc">水平翻转视频画面</string>
|
||||
<string name="keep_screen_on">屏幕常亮</string>
|
||||
<string name="keep_screen_on_desc">播放时防止屏幕自动关闭</string>
|
||||
|
||||
<string name="display_settings">显示设置</string>
|
||||
<string name="decoder_settings">解码设置</string>
|
||||
@@ -106,6 +106,8 @@
|
||||
<string name="quality_preference">画质偏好</string>
|
||||
<string name="quality_preference_default">默认(最高)</string>
|
||||
<string name="quality_preference_saver">流量节省</string>
|
||||
<string name="mirror_flip">镜像翻转</string>
|
||||
<string name="mirror_flip_desc">水平翻转视频画面</string>
|
||||
<string name="decoder">解码器</string>
|
||||
<string name="decoder_hardware">硬解</string>
|
||||
<string name="decoder_software">软解</string>
|
||||
|
||||
@@ -95,8 +95,8 @@
|
||||
<string name="background_play_battery_hint">需要電池最佳化豁免權限</string>
|
||||
<string name="battery_configuration">電池配置</string>
|
||||
<string name="battery_configuration_desc">授予電池最佳化豁免,等背景播放更穩定</string>
|
||||
<string name="mirror_flip">鏡像翻轉</string>
|
||||
<string name="mirror_flip_desc">水平翻轉影片畫面</string>
|
||||
<string name="keep_screen_on">螢幕常亮</string>
|
||||
<string name="keep_screen_on_desc">播放時防止螢幕自動熄滅</string>
|
||||
|
||||
<string name="display_settings">顯示設定</string>
|
||||
<string name="decoder_settings">解碼設定</string>
|
||||
@@ -106,6 +106,8 @@
|
||||
<string name="quality_preference">畫質偏好</string>
|
||||
<string name="quality_preference_default">預設(最高)</string>
|
||||
<string name="quality_preference_saver">數據慳量</string>
|
||||
<string name="mirror_flip">鏡像翻轉</string>
|
||||
<string name="mirror_flip_desc">水平翻轉影片畫面</string>
|
||||
<string name="decoder">解碼器</string>
|
||||
<string name="decoder_hardware">硬解</string>
|
||||
<string name="decoder_software">軟解</string>
|
||||
|
||||
@@ -95,8 +95,8 @@
|
||||
<string name="background_play_battery_hint">需要電池效能最佳化豁免權限</string>
|
||||
<string name="battery_configuration">電池配置</string>
|
||||
<string name="battery_configuration_desc">授予電池效能最佳化豁免以實現穩定的背景播放</string>
|
||||
<string name="mirror_flip">鏡像翻轉</string>
|
||||
<string name="mirror_flip_desc">水平翻轉影片畫面</string>
|
||||
<string name="keep_screen_on">螢幕常亮</string>
|
||||
<string name="keep_screen_on_desc">播放時防止螢幕自動關閉</string>
|
||||
|
||||
<string name="display_settings">顯示設定</string>
|
||||
<string name="decoder_settings">解碼設定</string>
|
||||
@@ -106,6 +106,8 @@
|
||||
<string name="quality_preference">畫質偏好</string>
|
||||
<string name="quality_preference_default">預設(最高)</string>
|
||||
<string name="quality_preference_saver">數據節省</string>
|
||||
<string name="mirror_flip">鏡像翻轉</string>
|
||||
<string name="mirror_flip_desc">水平翻轉影片畫面</string>
|
||||
<string name="decoder">解碼器</string>
|
||||
<string name="decoder_hardware">硬解</string>
|
||||
<string name="decoder_software">軟解</string>
|
||||
|
||||
@@ -98,8 +98,8 @@
|
||||
<string name="background_play_battery_hint">Requires battery optimization exemption</string>
|
||||
<string name="battery_configuration">Battery Configuration</string>
|
||||
<string name="battery_configuration_desc">Grant battery optimization exemption for stable background playback</string>
|
||||
<string name="mirror_flip">Mirror Flip</string>
|
||||
<string name="mirror_flip_desc">Flip video horizontally</string>
|
||||
<string name="keep_screen_on">Keep Screen On</string>
|
||||
<string name="keep_screen_on_desc">Prevent screen from turning off during playback</string>
|
||||
|
||||
<string name="display_settings">Display Settings</string>
|
||||
<string name="decoder_settings">Decoder Settings</string>
|
||||
@@ -109,6 +109,8 @@
|
||||
<string name="quality_preference">Quality Preference</string>
|
||||
<string name="quality_preference_default">Default (Highest)</string>
|
||||
<string name="quality_preference_saver">Data Saver</string>
|
||||
<string name="mirror_flip">Mirror Flip</string>
|
||||
<string name="mirror_flip_desc">Flip video horizontally</string>
|
||||
<string name="decoder">Decoder</string>
|
||||
<string name="decoder_hardware">Hardware</string>
|
||||
<string name="decoder_software">Software</string>
|
||||
|
||||
Reference in New Issue
Block a user