From e3ce4aa9fd62ae213e5d11f3e7eced2209ea4f3f Mon Sep 17 00:00:00 2001
From: zhushenwudi <55681140@163.com>
Date: Fri, 2 Oct 2026 14:45:32 +0800
Subject: [PATCH] fix only bigger than phone can land Orientation
---
.../lovelivemusicplayer/MainActivity.kt | 2 ++
.../native/QrScanActivity.kt | 5 +++-
.../native/WebViewActivity.kt | 2 ++
.../native/util/ScreenOrientationPolicy.kt | 24 +++++++++++++++++++
iosApp/iosApp/Info.plist | 2 --
iosApp/project.yml | 2 --
6 files changed, 32 insertions(+), 5 deletions(-)
create mode 100644 androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/util/ScreenOrientationPolicy.kt
diff --git a/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/MainActivity.kt b/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/MainActivity.kt
index 57c64fa..3022384 100644
--- a/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/MainActivity.kt
+++ b/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/MainActivity.kt
@@ -24,6 +24,7 @@ import com.zhushenwudi.lovelivemusicplayer.native.platform.AndroidShareBridge
import com.zhushenwudi.lovelivemusicplayer.native.platform.AndroidDesktopLyricController
import com.zhushenwudi.lovelivemusicplayer.native.platform.installAndroidPlatformServices
import com.zhushenwudi.lovelivemusicplayer.native.util.AppUtils
+import com.zhushenwudi.lovelivemusicplayer.native.util.applyScreenOrientationPolicy
import com.zhushenwudi.lovelivemusicplayer.platform.AndroidUiHost
import com.zhushenwudi.lovelivemusicplayer.platform.PlatformServices
import com.zhushenwudi.lovelivemusicplayer.platform.initAndroidFileSystem
@@ -36,6 +37,7 @@ class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ applyScreenOrientationPolicy()
enableEdgeToEdge()
AndroidUiHost.activity = this
initAndroidFileSystem(applicationContext)
diff --git a/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/QrScanActivity.kt b/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/QrScanActivity.kt
index 0020e5c..35c47cb 100644
--- a/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/QrScanActivity.kt
+++ b/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/QrScanActivity.kt
@@ -5,6 +5,8 @@ import androidx.activity.ComponentActivity
import com.journeyapps.barcodescanner.ScanContract
import com.journeyapps.barcodescanner.ScanOptions
import com.zhushenwudi.lovelivemusicplayer.i18n.I18n
+import com.zhushenwudi.lovelivemusicplayer.native.util.applyScreenOrientationPolicy
+import com.zhushenwudi.lovelivemusicplayer.native.util.isLargeScreenDevice
import com.zhushenwudi.lovelivemusicplayer.platform.AndroidUiHost
class QrScanActivity : ComponentActivity() {
@@ -22,11 +24,12 @@ class QrScanActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ applyScreenOrientationPolicy()
val options = ScanOptions().apply {
setDesiredBarcodeFormats(ScanOptions.QR_CODE)
setPrompt(I18n.t("scan_qr_prompt"))
setBeepEnabled(false)
- setOrientationLocked(false)
+ setOrientationLocked(!isLargeScreenDevice())
setCaptureActivity(com.journeyapps.barcodescanner.CaptureActivity::class.java)
}
barcodeLauncher.launch(options)
diff --git a/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/WebViewActivity.kt b/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/WebViewActivity.kt
index ab796c2..ddc35f6 100644
--- a/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/WebViewActivity.kt
+++ b/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/WebViewActivity.kt
@@ -42,6 +42,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.view.WindowCompat
import com.zhushenwudi.lovelivemusicplayer.i18n.tr
+import com.zhushenwudi.lovelivemusicplayer.native.util.applyScreenOrientationPolicy
import com.zhushenwudi.lovelivemusicplayer.platform.WebViewAdBlock
import java.io.ByteArrayInputStream
import kotlinx.coroutines.delay
@@ -56,6 +57,7 @@ class WebViewActivity : ComponentActivity() {
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ applyScreenOrientationPolicy()
WindowCompat.setDecorFitsSystemWindows(window, false)
val url = intent.getStringExtra(EXTRA_URL).orEmpty()
val title = intent.getStringExtra(EXTRA_TITLE)
diff --git a/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/util/ScreenOrientationPolicy.kt b/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/util/ScreenOrientationPolicy.kt
new file mode 100644
index 0000000..02e8749
--- /dev/null
+++ b/androidApp/src/main/kotlin/com/zhushenwudi/lovelivemusicplayer/native/util/ScreenOrientationPolicy.kt
@@ -0,0 +1,24 @@
+package com.zhushenwudi.lovelivemusicplayer.native.util
+
+import android.app.Activity
+import android.content.pm.ActivityInfo
+
+private const val LARGE_SCREEN_MIN_SMALLEST_WIDTH_DP = 600
+
+/** 手机固定竖屏;平板和展开后达到大屏阈值的设备遵循系统旋转设置。 */
+fun Activity.applyScreenOrientationPolicy() {
+ val isLargeScreen = resources.configuration.smallestScreenWidthDp >=
+ LARGE_SCREEN_MIN_SMALLEST_WIDTH_DP
+ val targetOrientation = if (isLargeScreen) {
+ ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
+ } else {
+ ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
+ }
+ if (requestedOrientation != targetOrientation) {
+ requestedOrientation = targetOrientation
+ }
+}
+
+/** 扫码组件使用同一设备分类,避免手机进入扫码页后重新开放旋转。 */
+fun Activity.isLargeScreenDevice(): Boolean =
+ resources.configuration.smallestScreenWidthDp >= LARGE_SCREEN_MIN_SMALLEST_WIDTH_DP
diff --git a/iosApp/iosApp/Info.plist b/iosApp/iosApp/Info.plist
index 621dbe4..369443d 100644
--- a/iosApp/iosApp/Info.plist
+++ b/iosApp/iosApp/Info.plist
@@ -167,8 +167,6 @@
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad
diff --git a/iosApp/project.yml b/iosApp/project.yml
index 7dbe43b..3a6065d 100644
--- a/iosApp/project.yml
+++ b/iosApp/project.yml
@@ -85,8 +85,6 @@ targets:
- remote-notification
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
- - UIInterfaceOrientationLandscapeLeft
- - UIInterfaceOrientationLandscapeRight
"UISupportedInterfaceOrientations~ipad":
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft