Android防止锁屏:Xamarin开发CCTV应用需实现屏幕多日常亮
解决Xamarin Android CCTV应用屏幕自动熄灭的问题
你当前使用的WakeLockFlags.Partial仅能保持CPU持续运行,无法维持屏幕常亮,这就是运行一天后屏幕熄灭的原因。以下是两种实现屏幕长期常亮的方案:
方案一:使用Window标志(推荐,无需权限)
在Activity的OnCreate方法中添加以下代码,系统会自动在Activity处于前台时保持屏幕常亮,无需申请额外权限,且更符合Android系统规范:
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // 保持屏幕常亮 Window.AddFlags(WindowManagerFlags.KeepScreenOn); // 其他初始化代码... }
方案二:使用WakeLock(需权限)
如果必须通过WakeLock实现,需将锁类型改为ScreenBright,同时申请对应权限:
- 在
AndroidManifest.xml中添加WAKE_LOCK权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
- 修改WakeLock初始化代码:
lockctl = ((PowerManager)GetSystemService(Context.PowerService)).NewWakeLock( WakeLockFlags.ScreenBright | WakeLockFlags.AcquireCausesWakeup, "CCTV:ScreenLock"); lockctl.Acquire();
注意:
WakeLockFlags.Full在Android 7.0(API 24)及以上已被弃用,优先使用ScreenBright。
额外注意事项
- 部分厂商的省电模式会强制触发屏幕休眠,需引导用户关闭应用对应的省电策略;
- CCTV应用通常保持前台运行即可满足需求,若需后台维持屏幕常亮,需结合前台服务实现,但这并非常规场景。
内容的提问来源于stack exchange,提问作者나현수
相关产品推荐
相关产品推荐

