diff --git a/android/app/src/main/java/com/lxmusicmobile/utils/UtilsModule.java b/android/app/src/main/java/com/lxmusicmobile/utils/UtilsModule.java index 739bd22..f363c79 100644 --- a/android/app/src/main/java/com/lxmusicmobile/utils/UtilsModule.java +++ b/android/app/src/main/java/com/lxmusicmobile/utils/UtilsModule.java @@ -1,9 +1,11 @@ package com.lxmusicmobile.utils; +import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.util.Log; +import android.view.WindowManager; import androidx.core.content.FileProvider; @@ -96,5 +98,35 @@ public class UtilsModule extends ReactContextBaseJavaModule { promise.resolve(null); } } + + @ReactMethod + public void screenkeepAwake() { + // https://github.com/corbt/react-native-keep-awake/blob/master/android/src/main/java/com/corbt/keepawake/KCKeepAwake.java + final Activity activity = getCurrentActivity(); + + if (activity != null) { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + }); + } + } + + @ReactMethod + public void screenUnkeepAwake() { + // https://github.com/corbt/react-native-keep-awake/blob/master/android/src/main/java/com/corbt/keepawake/KCKeepAwake.java + final Activity activity = getCurrentActivity(); + + if (activity != null) { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + activity.getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + }); + } + } } diff --git a/publish/changeLog.md b/publish/changeLog.md index bac1dc7..6e5c819 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -1,3 +1,3 @@ -### 新增 +### 优化 -- 新增竖屏下的播放详情页 +- 切换到播放详情歌词界面时将阻止屏幕息屏 diff --git a/src/screens/PlayDetail/Portrait/Player/Lyric.js b/src/screens/PlayDetail/Portrait/Player/Lyric.js index 0d9021b..874adaf 100644 --- a/src/screens/PlayDetail/Portrait/Player/Lyric.js +++ b/src/screens/PlayDetail/Portrait/Player/Lyric.js @@ -3,6 +3,7 @@ import { View, Text, StyleSheet, FlatList } from 'react-native' import { useGetter, useDispatch } from '@/store' import { useLayout } from '@/utils/hooks' import { useLrcPlay, useLrcSet } from '@/plugins/lyric' +import { screenkeepAwake, screenUnkeepAwake } from '@/utils/utils' const LrcLine = memo(({ text, line, activeLine }) => { const theme = useGetter('common', 'theme') @@ -41,12 +42,19 @@ export default memo(() => { // const imgWidth = useMemo(() => layout.width * 0.75, [layout.width]) const handleScrollToActive = useCallback((index = lineRef.current) => { - if (!scrollViewRef.current || !linesRef.current.length) return - scrollViewRef.current.scrollToIndex({ - index, - animated: true, - viewPosition: 0.4, - }) + screenkeepAwake() + + if (scrollViewRef.current && linesRef.current.length) { + scrollViewRef.current.scrollToIndex({ + index, + animated: true, + viewPosition: 0.4, + }) + } + + return () => { + screenUnkeepAwake() + } }, []) const handleScrollBeginDrag = () => { diff --git a/src/utils/utils.js b/src/utils/utils.js index cff09e2..ce0ed97 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -7,3 +7,7 @@ export const exitApp = UtilsModule.exitApp export const getSupportedAbis = UtilsModule.getSupportedAbis export const installApk = (filePath, fileProviderAuthority) => UtilsModule.installApk(filePath, fileProviderAuthority) + + +export const screenkeepAwake = UtilsModule.screenkeepAwake +export const screenUnkeepAwake = UtilsModule.screenUnkeepAwake