Android 亮屏

亮屏需求:1. 使屏幕常亮(满足条件下:收到特定广播后,使屏幕常亮;收到另一特定广播,取消常亮功能)
                2. 屏幕自动熄灭后,将屏幕亮起(包括:手机在指定时间后自动熄灭,按下锁屏键后熄灭)

三种方案:
(1)通过view.Window实现
Window  window;

window=getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

//取消亮屏
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

这种方法可以实现屏幕常亮与取消常亮功能,但在屏幕自动熄灭后无法点亮屏幕。
因为Window:通过控制顶层窗口的外观行为,使屏幕亮起;屏幕自动熄灭后会锁屏,所以无法点亮屏幕,只能保持屏幕常亮。

(2)通过WakeLock实现
要申请权限
<uses-permission android:name="android.permission.WAKE_LOCK" />

获取电源管理器对象

PowerManager mPowerManager = (PowerManager) getSystemService(POWER_SERVICE);
boolean screenOn = mPowerManager.isScreenOn();
if (!screenOn) {
// 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
PowerManager.WakeLock mWakeLock = mPowerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");
mWakeLock.acquire(1000); // 点亮屏幕
}

//释放屏幕锁
if (null != mWakeLock) {
mWakeLock.release();
}


这种方法可以实现屏幕常亮与取消常亮功能,也可在屏幕熄灭后点亮屏幕(包括按电源键熄灭屏幕)。PowerManager.SCREEN_DIM_WAKE_LOCK  //屏幕常亮,但是不会持续高亮,会变暗
PowerManager.ACQUIRE_CAUSES_WAKEUP| PowerManager.SCREEN_BRIGHT_WAKE_LOCK   //屏幕保持常亮

PowerManager:此类使您能够控制设备的电源状态。
PowerManager WakeLock:唤醒锁是一种机制, 用于指示应用程序需要使设备保持不动。

唤醒锁级别, 并对系统电源产生不同的影响。这些级别是互斥的-只能指定其中之一.见下表:


如果您持有部分唤醒锁, CPU 将继续运行, 无论显示超时或屏幕状态如何, 甚至在用户按下电源按钮后。在所有其他唤醒锁中, CPU 将运行, 但用户仍然可以使用电源按钮使设备休眠。
此外, 还可以添加另外两个标志, 仅影响屏幕的行为。当与 PARTIAL_WAKE_LOCK合并时, 这些标志不起作用.

(3)
在布局文件里加上android:keepScreenOn="true"
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页