feat: virtual button appearance control for fullscreen; building abi matrix control
This commit is contained in:
@@ -3,6 +3,14 @@ plugins {
|
||||
alias(libs.plugins.compose.compiler)
|
||||
}
|
||||
|
||||
val defaultAbiList = listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
||||
val configuredAbiList = (project.findProperty("abiList") as String?)
|
||||
?.split(",")
|
||||
?.map { it.trim() }
|
||||
?.filter { it.isNotEmpty() }
|
||||
?.ifEmpty { null }
|
||||
?: defaultAbiList
|
||||
|
||||
android {
|
||||
namespace = "io.github.miuzarte.scrcpyforandroid"
|
||||
compileSdk {
|
||||
@@ -19,7 +27,8 @@ android {
|
||||
versionName = "0.0.1"
|
||||
|
||||
ndk {
|
||||
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
||||
abiFilters.clear()
|
||||
abiFilters += configuredAbiList
|
||||
}
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
@@ -29,7 +38,7 @@ android {
|
||||
abi {
|
||||
isEnable = true
|
||||
reset()
|
||||
include("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
||||
include(*configuredAbiList.toTypedArray())
|
||||
isUniversalApk = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@ object AppDefaults {
|
||||
const val DefaultMonetEnabled = false
|
||||
|
||||
const val DefaultFullscreenDebugInfoEnabled = false
|
||||
const val DefaultShowFullscreenVirtualButtons = true
|
||||
const val DefaultDevicePreviewCardHeightDp = 320
|
||||
const val DefaultKeepScreenOnWhenStreamingEnabled = false
|
||||
const val DefaultVirtualButtonsOutside = "more,home,back"
|
||||
|
||||
@@ -7,6 +7,7 @@ object AppPreferenceKeys {
|
||||
const val ThemeBaseIndex = "theme_base_index"
|
||||
const val MonetEnabled = "monet_enabled"
|
||||
const val FullscreenDebugInfoEnabled = "fullscreen_debug_info_enabled"
|
||||
const val ShowFullscreenVirtualButtons = "show_fullscreen_virtual_buttons"
|
||||
const val DevicePreviewCardHeightDp = "device_preview_card_height_dp"
|
||||
const val KeepScreenOnWhenStreamingEnabled = "keep_screen_on_when_streaming_enabled"
|
||||
const val VirtualButtonsOutside = "virtual_buttons_outside"
|
||||
|
||||
@@ -41,6 +41,7 @@ fun FullscreenControlPage(
|
||||
virtualButtonsOutside: List<String>,
|
||||
virtualButtonsInMore: List<String>,
|
||||
showDebugInfo: Boolean,
|
||||
showVirtualButtons: Boolean,
|
||||
onDismiss: () -> Unit,
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
@@ -150,14 +151,16 @@ fun FullscreenControlPage(
|
||||
},
|
||||
)
|
||||
|
||||
bar.Fullscreen(
|
||||
modifier = Modifier.align(Alignment.BottomCenter),
|
||||
onPressHaptic = { haptics.press() },
|
||||
onConfirmHaptic = { haptics.confirm() },
|
||||
onAction = { action ->
|
||||
action.keycode?.let(::sendKeycode)
|
||||
},
|
||||
)
|
||||
if (showVirtualButtons) {
|
||||
bar.Fullscreen(
|
||||
modifier = Modifier.align(Alignment.BottomCenter),
|
||||
onPressHaptic = { haptics.press() },
|
||||
onConfirmHaptic = { haptics.confirm() },
|
||||
onAction = { action ->
|
||||
action.keycode?.let(::sendKeycode)
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +113,9 @@ fun MainPage() {
|
||||
var themeBaseIndex by rememberSaveable { mutableIntStateOf(initialSettings.themeBaseIndex) }
|
||||
var monetEnabled by rememberSaveable { mutableStateOf(initialSettings.monetEnabled) }
|
||||
var fullscreenDebugInfoEnabled by rememberSaveable { mutableStateOf(initialSettings.fullscreenDebugInfoEnabled) }
|
||||
var showFullscreenVirtualButtons by rememberSaveable {
|
||||
mutableStateOf(initialSettings.showFullscreenVirtualButtons)
|
||||
}
|
||||
var keepScreenOnWhenStreamingEnabled by rememberSaveable {
|
||||
mutableStateOf(initialSettings.keepScreenOnWhenStreamingEnabled)
|
||||
}
|
||||
@@ -178,6 +181,7 @@ fun MainPage() {
|
||||
themeBaseIndex,
|
||||
monetEnabled,
|
||||
fullscreenDebugInfoEnabled,
|
||||
showFullscreenVirtualButtons,
|
||||
keepScreenOnWhenStreamingEnabled,
|
||||
virtualButtonsOutside,
|
||||
virtualButtonsInMore,
|
||||
@@ -195,6 +199,7 @@ fun MainPage() {
|
||||
themeBaseIndex = themeBaseIndex,
|
||||
monetEnabled = monetEnabled,
|
||||
fullscreenDebugInfoEnabled = fullscreenDebugInfoEnabled,
|
||||
showFullscreenVirtualButtons = showFullscreenVirtualButtons,
|
||||
keepScreenOnWhenStreamingEnabled = keepScreenOnWhenStreamingEnabled,
|
||||
virtualButtonsOutside = VirtualButtonActions.encodeStoredIds(virtualButtonsOutside),
|
||||
virtualButtonsInMore = VirtualButtonActions.encodeStoredIds(virtualButtonsInMore),
|
||||
@@ -467,10 +472,14 @@ fun MainPage() {
|
||||
onMonetEnabledChange = { monetEnabled = it },
|
||||
fullscreenDebugInfoEnabled = fullscreenDebugInfoEnabled,
|
||||
onFullscreenDebugInfoEnabledChange = { fullscreenDebugInfoEnabled = it },
|
||||
showFullscreenVirtualButtons = showFullscreenVirtualButtons,
|
||||
onShowFullscreenVirtualButtonsChange = { showFullscreenVirtualButtons = it },
|
||||
keepScreenOnWhenStreamingEnabled = keepScreenOnWhenStreamingEnabled,
|
||||
onKeepScreenOnWhenStreamingEnabledChange = {
|
||||
keepScreenOnWhenStreamingEnabled = it
|
||||
},
|
||||
onOpenReorderDevices = { openReorderDevicesAction?.invoke() },
|
||||
onOpenVirtualButtonOrder = { rootBackStack.add(RootScreen.VirtualButtonOrder) },
|
||||
devicePreviewCardHeightDp = devicePreviewCardHeightDp,
|
||||
onDevicePreviewCardHeightDpChange = {
|
||||
devicePreviewCardHeightDp = it.coerceAtLeast(120)
|
||||
@@ -635,6 +644,7 @@ fun MainPage() {
|
||||
virtualButtonsOutside = virtualButtonsOutside,
|
||||
virtualButtonsInMore = virtualButtonsInMore,
|
||||
showDebugInfo = fullscreenDebugInfoEnabled,
|
||||
showVirtualButtons = showFullscreenVirtualButtons,
|
||||
onDismiss = { popRoot() },
|
||||
)
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import top.yukonga.miuix.kmp.basic.IconButton
|
||||
import top.yukonga.miuix.kmp.basic.ScrollBehavior
|
||||
import top.yukonga.miuix.kmp.basic.Text
|
||||
import top.yukonga.miuix.kmp.basic.TextField
|
||||
import top.yukonga.miuix.kmp.extra.SuperArrow
|
||||
import top.yukonga.miuix.kmp.extra.SuperDropdown
|
||||
import top.yukonga.miuix.kmp.extra.SuperSwitch
|
||||
import top.yukonga.miuix.kmp.theme.ColorSchemeMode
|
||||
@@ -60,8 +61,12 @@ fun SettingsScreen(
|
||||
onMonetEnabledChange: (Boolean) -> Unit,
|
||||
fullscreenDebugInfoEnabled: Boolean,
|
||||
onFullscreenDebugInfoEnabledChange: (Boolean) -> Unit,
|
||||
showFullscreenVirtualButtons: Boolean,
|
||||
onShowFullscreenVirtualButtonsChange: (Boolean) -> Unit,
|
||||
keepScreenOnWhenStreamingEnabled: Boolean,
|
||||
onKeepScreenOnWhenStreamingEnabledChange: (Boolean) -> Unit,
|
||||
onOpenReorderDevices: () -> Unit,
|
||||
onOpenVirtualButtonOrder: () -> Unit,
|
||||
devicePreviewCardHeightDp: Int,
|
||||
onDevicePreviewCardHeightDpChange: (Int) -> Unit,
|
||||
customServerUri: String?,
|
||||
@@ -106,6 +111,12 @@ fun SettingsScreen(
|
||||
checked = fullscreenDebugInfoEnabled,
|
||||
onCheckedChange = onFullscreenDebugInfoEnabledChange,
|
||||
)
|
||||
SuperSwitch(
|
||||
title = "全屏显示虚拟按钮",
|
||||
summary = "在全屏模式底部显示返回/主页等虚拟按钮",
|
||||
checked = showFullscreenVirtualButtons,
|
||||
onCheckedChange = onShowFullscreenVirtualButtonsChange,
|
||||
)
|
||||
SuperSwitch(
|
||||
title = "投屏时不允许息屏",
|
||||
summary = "Scrcpy 启动后保持本机常亮,避免锁屏导致 ADB 断开",
|
||||
@@ -128,6 +139,16 @@ fun SettingsScreen(
|
||||
raw.toIntOrNull()?.let { onDevicePreviewCardHeightDpChange(it.coerceAtLeast(120)) }
|
||||
},
|
||||
)
|
||||
SuperArrow(
|
||||
title = "调整设备排序",
|
||||
summary = "调整设备页快捷设备列表顺序",
|
||||
onClick = onOpenReorderDevices,
|
||||
)
|
||||
SuperArrow(
|
||||
title = "虚拟按钮排序",
|
||||
summary = "调整底部虚拟按钮与更多菜单顺序",
|
||||
onClick = onOpenVirtualButtonOrder,
|
||||
)
|
||||
}
|
||||
|
||||
SectionSmallTitle(text = "scrcpy-server")
|
||||
|
||||
@@ -9,6 +9,7 @@ internal data class MainSettings(
|
||||
val themeBaseIndex: Int = AppDefaults.DefaultThemeBaseIndex,
|
||||
val monetEnabled: Boolean = AppDefaults.DefaultMonetEnabled,
|
||||
val fullscreenDebugInfoEnabled: Boolean = AppDefaults.DefaultFullscreenDebugInfoEnabled,
|
||||
val showFullscreenVirtualButtons: Boolean = AppDefaults.DefaultShowFullscreenVirtualButtons,
|
||||
val devicePreviewCardHeightDp: Int = AppDefaults.DefaultDevicePreviewCardHeightDp,
|
||||
val keepScreenOnWhenStreamingEnabled: Boolean = AppDefaults.DefaultKeepScreenOnWhenStreamingEnabled,
|
||||
val virtualButtonsOutside: String = AppDefaults.DefaultVirtualButtonsOutside,
|
||||
@@ -70,6 +71,10 @@ internal fun loadMainSettings(context: Context): MainSettings {
|
||||
AppPreferenceKeys.FullscreenDebugInfoEnabled,
|
||||
AppDefaults.DefaultFullscreenDebugInfoEnabled,
|
||||
),
|
||||
showFullscreenVirtualButtons = prefs.getBoolean(
|
||||
AppPreferenceKeys.ShowFullscreenVirtualButtons,
|
||||
AppDefaults.DefaultShowFullscreenVirtualButtons,
|
||||
),
|
||||
devicePreviewCardHeightDp = prefs.getInt(
|
||||
AppPreferenceKeys.DevicePreviewCardHeightDp,
|
||||
AppDefaults.DefaultDevicePreviewCardHeightDp,
|
||||
@@ -108,6 +113,7 @@ internal fun saveMainSettings(context: Context, settings: MainSettings) {
|
||||
putInt(AppPreferenceKeys.ThemeBaseIndex, settings.themeBaseIndex)
|
||||
.putBoolean(AppPreferenceKeys.MonetEnabled, settings.monetEnabled)
|
||||
.putBoolean(AppPreferenceKeys.FullscreenDebugInfoEnabled, settings.fullscreenDebugInfoEnabled)
|
||||
.putBoolean(AppPreferenceKeys.ShowFullscreenVirtualButtons, settings.showFullscreenVirtualButtons)
|
||||
.putInt(AppPreferenceKeys.DevicePreviewCardHeightDp, settings.devicePreviewCardHeightDp.coerceAtLeast(120))
|
||||
.putBoolean(AppPreferenceKeys.KeepScreenOnWhenStreamingEnabled, settings.keepScreenOnWhenStreamingEnabled)
|
||||
.putString(AppPreferenceKeys.VirtualButtonsOutside, settings.virtualButtonsOutside)
|
||||
|
||||
Reference in New Issue
Block a user