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

完毕!

相关推荐
恋猫de小郭1 天前
你还用 IDE 吗? AI 狂欢时代下 Cursor 慌了, JetBrains 等 IDE 的未来是什么?
前端·flutter·ai编程
TT_Close2 天前
🐟 发布中心进度同步:8 个商店的上传功能开发完毕,正抓紧测试
flutter·npm·visual studio code
RaidenLiu2 天前
Flutter Platform Channel 底层架构解析 —— 从 BinaryMessenger 到跨平台消息通信机制
前端·flutter·前端框架
鹏多多2 天前
Flutter使用screenshot进行截屏和截长图以及分享保存的全流程指南
android·前端·flutter
恋猫de小郭2 天前
什么 AI 写 Android 最好用?官方做了一个基准测试排名
android·前端·flutter
勤劳打代码4 天前
Flutter 架构日记 — 状态管理
flutter·架构·前端框架
比特鹰5 天前
手把手带你用Flutter手搓人生K线
前端·javascript·flutter
火柴就是我5 天前
Flutter限制输入框只能输入中文,iOS拼音打不出来?
flutter
TT_Close5 天前
【Flutter×鸿蒙】debug 包也要签名,这点和 Android 差远了
android·flutter·harmonyos
TT_Close6 天前
【Flutter×鸿蒙】FVM 不认鸿蒙 SDK?4步手动塞进去
flutter·swift·harmonyos