From e2ce6c35295d8861e36dff8aa77f1d56107e7cde Mon Sep 17 00:00:00 2001 From: orz12 Date: Sun, 21 Jul 2024 22:41:16 +0800 Subject: [PATCH] mod: add more setActive --- lib/plugin/pl_player/controller.dart | 6 ++++-- lib/services/audio_handler.dart | 5 ++++- lib/services/audio_session.dart | 14 +------------- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 77e487ac5..ac4ef6d8b 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -447,6 +447,8 @@ class PlPlayerController { if (!_listenersInitialized) { startListeners(); } + + audioSessionHandler.setActive(true); await _initializePlayer(seekTo: seekTo); if (videoType.value != 'live' && _cid != 0) { refreshSubtitles().then((value) { @@ -616,6 +618,7 @@ class PlPlayerController { : dataSource.audioSource!.replaceAll(':', '\\:'), ); } + audioSessionHandler.setActive(true); await _videoPlayerController!.open( Media( dataSource.videoSource!, @@ -882,7 +885,7 @@ class PlPlayerController { /// TODO _duration.value丢失 Future play({bool repeat = false, bool hideControls = true}) async { if (_playerCount.value == 0) return; - audioSessionHandler.setActive(true); + await audioSessionHandler.setActive(true); // 播放时自动隐藏控制条 controls = !hideControls; // repeat为true,将从头播放 @@ -898,7 +901,6 @@ class PlPlayerController { playerStatus.status.value = PlayerStatus.playing; // screenManager.setOverlays(false); - } /// 暂停播放 diff --git a/lib/services/audio_handler.dart b/lib/services/audio_handler.dart index f45e587b9..a1bfc8c4f 100644 --- a/lib/services/audio_handler.dart +++ b/lib/services/audio_handler.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/services/service_locator.dart'; import 'package:audio_service/audio_service.dart'; import 'package:flutter/cupertino.dart'; import 'package:hive/hive.dart'; @@ -64,7 +65,7 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { // print(newMediaItem); // print(newMediaItem.title); // debugPrint(StackTrace.current.toString()); - if(!mediaItem.isClosed) mediaItem.add(newMediaItem); + if (!mediaItem.isClosed) mediaItem.add(newMediaItem); } Future setPlaybackState(PlayerStatus status, bool isBuffering) async { @@ -90,6 +91,7 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { MediaControl.fastForward .copyWith(androidIcon: 'drawable/ic_baseline_forward_10_24'), ], + androidCompactActionIndices: const [0, 1, 2], playing: playing, systemActions: const { MediaAction.seek, @@ -146,6 +148,7 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { if (mediaItem == null) return; // print("exist: ${PlPlayerController.instanceExists()}"); if (!PlPlayerController.instanceExists()) return; + audioSessionHandler.setActive(true); _item.add(mediaItem); setMediaItem(mediaItem); } diff --git a/lib/services/audio_session.dart b/lib/services/audio_session.dart index 9d3f45a56..f4a2e9571 100644 --- a/lib/services/audio_session.dart +++ b/lib/services/audio_session.dart @@ -31,13 +31,8 @@ class AudioSessionHandler { // player.setVolume(player.volume.value * 0.5); break; case AudioInterruptionType.pause: - PlPlayerController.pauseIfExists(isInterrupt: true); - // player.pause(isInterrupt: true); - _playInterrupted = true; - break; case AudioInterruptionType.unknown: PlPlayerController.pauseIfExists(isInterrupt: true); - // player.pause(isInterrupt: true); _playInterrupted = true; break; } @@ -49,15 +44,8 @@ class AudioSessionHandler { // player.setVolume(player.volume.value * 2); break; case AudioInterruptionType.pause: - if (_playInterrupted && await setActive(true)) { - PlPlayerController.playIfExists(); - } else { - SmartDialog.showToast( - 'The request was denied and the app should not play audio'); - } - //player.play(); - break; case AudioInterruptionType.unknown: + if (_playInterrupted) PlPlayerController.playIfExists(); break; } _playInterrupted = false;