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 ) ;

完毕!

相关推荐
见山是山-见水是水8 小时前
鸿蒙flutter第三方库适配 - 儿童故事
flutter·华为·harmonyos
2401_839633919 小时前
鸿蒙flutter第三方库适配 - URL处理应用
flutter·华为·harmonyos
李李李勃谦11 小时前
Flutter 框架跨平台鸿蒙开发 - 星空日记
flutter·华为·harmonyos
2401_8396339111 小时前
鸿蒙flutter第三方库适配 - 看板应用
flutter·华为·harmonyos
空中海12 小时前
5.1 HTTP 与网络请求
网络·网络协议·flutter·http
提子拌饭13313 小时前
生命组学架构下的细胞分化与基因突变生存模拟器:基于鸿蒙Flutter的情景树渲染与状态溢出防御
flutter·华为·架构·开源·harmonyos
空中海14 小时前
6.1 主题与暗色模式
运维·服务器·前端·flutter
你听得到1115 小时前
周下载60w,但是作者删库!我从本地 pub 缓存里把它救出来,顺手备份到了自己的 GitHub
前端·flutter
SY.ZHOU15 小时前
移动端架构体系(五):终篇总结
flutter·ios·系统架构·安卓·鸿蒙
不爱吃糖的程序媛16 小时前
flutter build hap --release` 后版本号被改回 1.0.0
flutter