FLutter 开发中 fijkplayer设置屏幕常亮

FLutter 视频播放:

`

目前在做FLutter种的视频播放功能,遇到了视频播放的时候,屏幕突然黑屏了。网上找了很多,无论是设置在原生的Activity界面,添加如下代码,

java 复制代码
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);  

还是在xml中设置

java 复制代码
    android:keepScreenOn="true"

都无效。甚至在Fragment中的onCreateView方法中加入代码,

java 复制代码
        Activity activity = getActivity();
        if (activity != null) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            activity.setTurnScreenOn(true);
        }

又或者,在任意一个View中加入如下代码,

java 复制代码
mView.setKeepScreenOn(true);

都无效。

后来在FLutter种加入wakelock 插件

dart 复制代码
  wakelock: ^0.6.2

在 initState 调用

dart 复制代码
Wakelock.enable();

在 dispose 调用

dart 复制代码
Wakelock.disable();

也无效。

其实,仔细查看Wakelock插件的源代码,发下这个插件保持屏幕常亮的方法,也是调用

java 复制代码
Activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);  

java 复制代码
Activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);  

原因分析:

以上的处理,都不是fijkplayer当前的View,所以不起作用。


解决方案:

查看fijkplayer的FLutter源代码以及原生的源代码发现,有一个叫做 FijkPlugin 的插件类,里面支持 有一个 setScreenOn 的方法,支持屏幕常亮。但是FijkPlayer的方法里面没有,这个时候,我们调用 FijkPlugin 的方法,接着就屏幕常亮了`。

dart 复制代码
    FijkPlugin.keepScreenOn( true ) ;

记得在dispose方法中调用

dart 复制代码
    FijkPlugin.keepScreenOn( false ) ;

完毕!

相关推荐
松☆6 分钟前
终章:构建完整生态——Flutter + OpenHarmony 分布式应用开发全景指南(含性能调优与发布实践)
flutter·wpf
庄雨山9 分钟前
Flutter Bloc 状态管理深度解析与开源鸿蒙 ArkUI 对标分析
flutter·bloc·openharmonyos
松☆9 分钟前
终极挑战:Flutter 应用在 OpenHarmony 上实现跨设备无缝流转(Continuation)与软总线协同
flutter·wpf
晚霞的不甘10 分钟前
Flutter + OpenHarmony 发布与运维指南:从上架 AppGallery 到线上监控的全生命周期管理
运维·flutter·harmonyos
安卓开发者12 分钟前
第三课:Widget核心概念剖析 - Flutter界面构建的基石
flutter
遝靑16 分钟前
Flutter 状态管理深度解析:从 Provider 到 Riverpod,再到 Bloc(附选型指南)
flutter
晚霞的不甘26 分钟前
Flutter + OpenHarmony 插件开发指南:深度集成原生能力,打造高性能鸿蒙扩展
flutter·华为·harmonyos
庄雨山42 分钟前
Flutter Provider 状态管理深度解析与开源鸿蒙 ArkUI 状态管理对比
flutter·provider·openharmonyos
song5011 小时前
鸿蒙 Flutter CI/CD 进阶:Jenkins + 鸿蒙打包自动化流程
分布式·python·flutter·3d·ci/cd·分类
微祎_1 小时前
Flutter 2025 测试体系全景:从单元测试到 E2E,构建高可靠、高覆盖率的自动化质量保障网
flutter·单元测试·自动化