提交 95a2950a authored 作者: kongdywang's avatar kongdywang

1. Fix the issue where calling exit Picture-in-Picture (PiP) in Android live…

1. Fix the issue where calling exit Picture-in-Picture (PiP) in Android live streaming is ineffective. 2. In the player component, a new parameter has been added to the release that can determine whether to continue listening to player events after entering Picture-in-Picture mode.
上级 56312ebd
...@@ -452,7 +452,7 @@ class _DemoSuperPlayerState extends State<DemoSuperPlayer> with TXPipPlayerResto ...@@ -452,7 +452,7 @@ class _DemoSuperPlayerState extends State<DemoSuperPlayer> with TXPipPlayerResto
Future<void> _releasePlayerSource() async { Future<void> _releasePlayerSource() async {
// must invoke when page exit. // must invoke when page exit.
await _controller.releasePlayer(); await _controller.releasePlayer(cancelListenerWhenPip: true);
// restore current brightness to sys brightness // restore current brightness to sys brightness
SuperPlayerPlugin.restorePageBrightness(); SuperPlayerPlugin.restorePageBrightness();
// unregister brightness observer // unregister brightness observer
......
...@@ -359,8 +359,7 @@ class TXLivePlayerController extends ChangeNotifier implements ValueListenable<T ...@@ -359,8 +359,7 @@ class TXLivePlayerController extends ChangeNotifier implements ValueListenable<T
/// 退出画中画,如果该播放器处于画中画模式 /// 退出画中画,如果该播放器处于画中画模式
@override @override
Future<void> exitPictureInPictureMode() async { Future<void> exitPictureInPictureMode() async {
/// live not support await _livePlayerApi.exitPictureInPictureMode(PlayerMsg()..playerId = _playerId);
// await _livePlayerApi.exitPictureInPictureMode(PlayerMsg()..playerId = _playerId);
} }
/// Release player resource occupation. /// Release player resource occupation.
......
...@@ -756,12 +756,18 @@ class SuperPlayerController { ...@@ -756,12 +756,18 @@ class SuperPlayerController {
/// Release the player. Once the player is released, it cannot be used again /// Release the player. Once the player is released, it cannot be used again
/// 释放播放器,播放器释放之后,将不能再使用 /// 释放播放器,播放器释放之后,将不能再使用
Future<void> releasePlayer() async { Future<void> releasePlayer({bool? cancelListenerWhenPip}) async {
// If in picture-in-picture mode, the player should not be released temporarily. // If in picture-in-picture mode, the player should not be released temporarily.
if (!TXPipController.instance.isPlayerInPip(getCurrentController())) { if (!TXPipController.instance.isPlayerInPip(getCurrentController())) {
await stopPlay(); await stopPlay();
await _vodPlayerController.dispose(); await _vodPlayerController.dispose();
await _livePlayerController.dispose(); await _livePlayerController.dispose();
} else if (null != cancelListenerWhenPip && cancelListenerWhenPip) {
// cancel listener when enter pip
_vodPlayEventListener?.cancel();
_vodNetEventListener?.cancel();
_livePlayEventListener?.cancel();
_liveNetEventListener?.cancel();
} }
// Remove the event listener for the widget. // Remove the event listener for the widget.
_observer?.onDispose(); _observer?.onDispose();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论