fix only bigger than phone can land Orientation

This commit is contained in:
2026-10-02 14:45:32 +08:00
parent 926dbd9ff3
commit e3ce4aa9fd
6 changed files with 32 additions and 5 deletions
@@ -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)
@@ -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)
@@ -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)
@@ -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
-2
View File
@@ -167,8 +167,6 @@
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
-2
View File
@@ -85,8 +85,6 @@ targets:
- remote-notification
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
"UISupportedInterfaceOrientations~ipad":
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft