Android实现屏幕保持常亮功能
作者:最萌小熊猫 发布时间:2023-08-09 13:20:15
标签:Android,屏幕
本文实例为大家分享了Android实现屏幕保持常亮的具体代码,供大家参考,具体内容如下
一、需求背景
当我们在玩游戏或者看视频的时候不希望app黑屏,那么就需要在app使用的时候处于常量状态。
二、实现方案
1、使用PowerManager.WakeLock
PowerManager powerManager = (PowerManager)getSystemService(POWER_SERVICE);
if (powerManager != null) {
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "WakeLock");
wakeLock.acquire(); //开启屏幕常亮
//wakeLock.release(); //释放wakeLock,注意此方法可能出现异常.具体可看源码
}
2、MediaPlayer有自带的方法防止屏幕黑屏
mediaPlayer.setScreenOnWhilePlaying(true);
源码如下:
/**
* Control whether we should use the attached SurfaceHolder to keep the
* screen on while video playback is occurring. This is the preferred
* method over {@link #setWakeMode} where possible, since it doesn't
* require that the application have permission for low-level wake lock
* access.
*
* @param screenOn Supply true to keep the screen on, false to allow it
* to turn off.
*/
public void setScreenOnWhilePlaying(boolean screenOn) {
if (mScreenOnWhilePlaying != screenOn) {
if (screenOn && mSurfaceHolder == null) {
Log.w(TAG, "setScreenOnWhilePlaying(true) is ineffective without a SurfaceHolder");
}
mScreenOnWhilePlaying = screenOn;
updateSurfaceScreenOn();
}
}
......
private void updateSurfaceScreenOn() {
if (mSurfaceHolder != null) {
mSurfaceHolder.setKeepScreenOn(mScreenOnWhilePlaying && mStayAwake);
}
}
3、在view中设置
setKeepScreenOn(true/false),同样可以在xml中设置android:keepScreenOn="",只要View可见即生效。
4、通过添加flag的方法设置
/**
* 是否开启屏幕常亮
*/
private var enableKeepScreenOn = false
/**
* activity 生命周期 *
*/
private var mActivityLifecycleCallbacks = object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
//在activity创建的时候设置屏幕保持常亮
if (enableKeepScreenOn) {
activity.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityStopped(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
}
override fun onActivityDestroyed(activity: Activity) {
}
}
/**
* 设置保持屏幕常亮状态
*/
fun setKeepScreenOn(enable: Boolean) {
enableKeepScreenOn = enable
}
来源:https://blog.csdn.net/weixin_42600398/article/details/116402553
0
投稿
猜你喜欢
- 目录什么是异常?编译时还是运行时?“受检异常”究竟可不可取?我的观点什么是异常?要了解受检异常,首先要了解什么是异常。在Java中,异常是一
- 官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-a
- 一、背景1.1、前言当我们写好代码并测试功能符合要求时,有可能每天都要执行这个程序(比如我写了一个爬虫脚本,每天定时运行获取我想看的小说更新
- 本文实例为大家分享了C#实现简单文本编辑器的具体代码,供大家参考,具体内容如下建立一个窗体文件,实现对文件的编辑保存和对txt文件的打开界面
- 对于单链表不熟悉的可以看一下基于Java实现单链表的增删改查一、原地反转1、新建一个哨兵节点下一结点指向头结点2、把待反转链表的下一节点插入
- 本文实例介绍了清除aspx页面缓存的程序实现方法,具体步骤如下:所有用到页面缓存的aspx页面修改以下cs,让它继承一个自定义基类(例如:P
- 文章导读本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统。本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结
- 话不多说,跟着小编一起来看下吧using System;using System.Collections.Generic;using Sys
- 在本文中,笔者向大家介绍下Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,并从源码中解读自动装箱与拆箱的原理,同时这种特性也留有
- 在基于UI元素的自动化测试中, 无论是桌面的UI自动化测试,还是Web的UI自动化测试. 首先我们需要查找和识别UI
- java StringBuilder类的详解及简单实例实现代码:public class StringBuilder
- 前言:使用 interrupt 来通知线程停止运行,而不是强制停止!普通情况停止线程public class Right
- 父类空间优先于子类对象产生在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含
- 异步方法很好的解决了这些问题,异步执行某个方法,程序立即开辟一个新线程去运行你的方法,主线程包括界面就不会死掉了。异步如何开始,好理解,现在
- 最近学习了 C#实现文件上传与下载,现在分享给大家。1、C#文件上传创建MyUpload.htm页面,用于测试<form name=&
- 第一个System.Runtime.InteropServices.Marshal.ReleaseComObject(sheets);&nb
- 一、现象在服务器上通过curl命令调用一个Java服务的查询接口,半天没有任何响应。关于该服务的基本功能如下:1、该服务是一个后台刷新指示器
- .ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管window
- Device Administration对于这个应用,市场上很多,但是看一下评论就知道效果有多差了,因为99%一键锁屏应用没办法卸载。今天
- 将SpringBoot项目部署到腾讯云注意:1、如果已经下载好MySql和JDK,可以直接跳过1、3步骤。但是不要忘记步骤2哦。2、如果已经