feat: 拆分后台播放与AudioService在后台行为的设置

This commit is contained in:
orz12
2024-04-22 20:16:28 +08:00
parent 493d2a32c2
commit 9255f3cb69
5 changed files with 20 additions and 13 deletions

View File

@@ -140,20 +140,20 @@ class _PlaySettingState extends State<PlaySetting> {
const SetSwitchItem(
title: '后台播放',
subTitle: '进入后台时继续播放',
setKey: SettingBoxKey.enableBackgroundPlay,
setKey: SettingBoxKey.continuePlayInBackground,
defaultVal: true,
),
if (Platform.isAndroid)
SetSwitchItem(
title: '后台画中画',
subTitle: '进入后台时以小窗形式PiP播放,建议同时开启【后台播放】,避免没有暂停按钮',
subTitle: '进入后台时以小窗形式PiP播放',
setKey: SettingBoxKey.autoPiP,
defaultVal: false,
callFn: (val) {
if (val &&
!setting.get(SettingBoxKey.enableBackgroundPlay,
defaultValue: true)) {
SmartDialog.showToast('建议开启后台播放');
SmartDialog.showToast('建议开启后台音频服务');
}
}),
if (Platform.isAndroid)
@@ -227,6 +227,12 @@ class _PlaySettingState extends State<PlaySetting> {
}
},
),
const SetSwitchItem(
title: '后台音频服务',
subTitle: '避免画中画没有播放暂停功能',
setKey: SettingBoxKey.enableBackgroundPlay,
defaultVal: true,
),
],
),
);

View File

@@ -1313,7 +1313,7 @@ class _HeaderControlState extends State<HeaderControl> {
),
const SizedBox(height: 10),
const Text(
'建议开启【后台播放】功能\n'
'建议开启【后台音频服务】\n'
'避免画中画没有暂停按钮',
style:
TextStyle(fontSize: 12.5, height: 1.5)),
@@ -1333,7 +1333,7 @@ class _HeaderControlState extends State<HeaderControl> {
SmartDialog.showToast("请重新载入本页面刷新");
// Get.back();
},
child: const Text('启用后台播放(推荐)')),
child: const Text('启用后台音频服务')),
const SizedBox(width: 10),
TextButton(
style: ButtonStyle(

View File

@@ -87,7 +87,7 @@ class PlPlayerController {
late StreamSubscription<DataStatus> _dataListenerForEnterFullscreen;
/// 后台播放
final Rx<bool> _backgroundPlay = false.obs;
final Rx<bool> _continuePlayInBackground = false.obs;
///
// ignore: prefer_final_fields
@@ -209,7 +209,7 @@ class PlPlayerController {
Rx<String> get videoFitDEsc => _videoFitDesc;
/// 后台播放
Rx<bool> get backgroundPlay => _backgroundPlay;
Rx<bool> get continuePlayInBackground => _continuePlayInBackground;
/// 是否长按倍速
Rx<bool> get doubleSpeedStatus => _doubleSpeedStatus;
@@ -311,8 +311,8 @@ class PlPlayerController {
enableAutoLongPressSpeed = setting
.get(SettingBoxKey.enableAutoLongPressSpeed, defaultValue: false);
// 后台播放
_backgroundPlay.value =
setting.get(SettingBoxKey.enableBackgroundPlay, defaultValue: true);
_continuePlayInBackground.value =
setting.get(SettingBoxKey.continuePlayInBackground, defaultValue: true);
if (!enableAutoLongPressSpeed) {
_longPressSpeed.value = videoStorage
.get(VideoBoxKey.longPressSpeedDefault, defaultValue: 3.0);
@@ -980,8 +980,8 @@ class PlPlayerController {
/// 设置后台播放
Future<void> setBackgroundPlay(bool val) async {
_backgroundPlay.value = val;
setting.put(SettingBoxKey.enableBackgroundPlay, val);
_continuePlayInBackground.value = val;
setting.put(SettingBoxKey.continuePlayInBackground, val);
videoPlayerServiceHandler.revalidateSetting();
}

View File

@@ -496,10 +496,10 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
children: <Widget>[
Obx(
() => Video(
key: ValueKey('${_.videoFit.value}${_.backgroundPlay.value}'),
key: ValueKey('${_.videoFit.value}${_.continuePlayInBackground.value}'),
controller: videoController,
controls: NoVideoControls,
pauseUponEnteringBackgroundMode: !_.backgroundPlay.value,
pauseUponEnteringBackgroundMode: !_.continuePlayInBackground.value,
resumeUponEnteringForegroundMode: true,
subtitleViewConfiguration: const SubtitleViewConfiguration(
style: subTitleStyle,

View File

@@ -108,6 +108,7 @@ class SettingBoxKey {
fullScreenGestureReverse = 'fullScreenGestureReverse',
enableShowDanmaku = 'enableShowDanmaku',
enableBackgroundPlay = 'enableBackgroundPlay',
continuePlayInBackground = 'continuePlayInBackground',
/// 隐私
blackMidsList = 'blackMidsList',