问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Android 14屏幕常亮技术全解析:从原理到应用

创作时间:
作者:
@小白创作中心

Android 14屏幕常亮技术全解析:从原理到应用

引用
CSDN
11
来源
1.
https://blog.csdn.net/KQe397773106/article/details/139531844
2.
https://blog.csdn.net/wolf0706/article/details/144021161
3.
https://wenku.csdn.net/doc/5swjku8b2y
4.
https://www.asurion.com/connect/tech-tips/turn-off-always-on-display-android/
5.
https://juejin.cn/post/7377581109154168859
6.
https://www.dovov.com/90155.html
7.
https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API
8.
https://www.blackview.hk/blog/tech-news/will-android-14-improve-battery-life
9.
http://www.dovov.com/9626.html
10.
https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API#interfaces
11.
https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API#concepts_and_usage

Android 14的发布带来了诸多令人期待的新特性,其中屏幕常亮技术的优化尤为引人注目。这项技术不仅提升了用户体验,还为开发者提供了更多控制设备行为的能力。本文将深入解析Android 14中屏幕常亮的新特性和优化策略,探讨其在不同场景下的应用。

01

技术原理:屏幕常亮的核心机制

Android 14提供了多种实现屏幕常亮的方法,其中最常用的是WakeLock和FLAG_KEEP_SCREEN_ON。

WakeLock机制详解

WakeLock是一种强大的机制,可以让CPU持续处于唤醒状态,防止设备进入休眠。这对于需要长时间运行的后台任务尤为重要,比如音乐播放或导航应用。

要使用WakeLock,首先需要在代码中创建PowerManager实例:

PowerManager manager = (PowerManager) getSystemService(Service.POWER_SERVICE);

然后创建WakeLock对象:

PowerManager.WakeLock wakeLock = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp:WakeLock");

这里需要注意的是,需要在AndroidManifest.xml中添加相应的权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

WakeLock有多个级别可供选择:

  • PARTIAL_WAKE_LOCK:保持CPU运行,但允许屏幕和键盘背光关闭
  • SCREEN_DIM_WAKE_LOCK:保持屏幕低亮度显示
  • SCREEN_BRIGHT_WAKE_LOCK:保持屏幕高亮度显示
  • PROXIMITY_SCREEN_OFF_WAKE_LOCK:当接近传感器检测到物体时关闭屏幕

使用WakeLock时需要注意以下几点:

  • 尽量设置超时时间,防止锁一直无法释放
  • 使用完毕后及时释放锁,避免过度耗电
  • 遵循计数机制,确保acquire和release调用次数匹配

FLAG_KEEP_SCREEN_ON的使用

FLAG_KEEP_SCREEN_ON是一种更轻量级的解决方案,适用于需要屏幕保持常亮的Activity。可以通过以下方式设置:

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

或者在布局文件中添加属性:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:keepScreenOn="true">
    <!-- 其他布局代码 -->
</LinearLayout>

与WakeLock相比,FLAG_KEEP_SCREEN_ON的使用更加简单,不需要额外的权限声明。但是它仅作用于当前Activity,而WakeLock可以作用于整个应用甚至系统级别。

02

JavaScript实现屏幕常亮

除了原生Android应用,Web应用也可以实现屏幕常亮的效果。这得益于Screen Wake Lock API的引入。

要使用Screen Wake Lock API,首先需要检查浏览器是否支持:

if ('wakeLock' in navigator) {
    // 支持Screen Wake Lock API
} else {
    // 不支持,需要提供备选方案
}

请求屏幕保持唤醒状态:

let wakeLock = null;

async function requestWakeLock() {
    try {
        wakeLock = await navigator.wakeLock.request('screen');
        console.log('Screen wake lock is active.');
    } catch (err) {
        console.error(`${err.name}, ${err.message}`);
    }
}

释放屏幕唤醒锁:

if (wakeLock) {
    wakeLock.release().then(() => {
        wakeLock = null;
        console.log('Screen wake lock has been released.');
    });
}

需要注意的是,Screen Wake Lock API仅在安全上下文中可用(即HTTPS环境),并且可能因系统设置(如省电模式)或电池电量低而被拒绝。

03

Android 14的电源管理优化

虽然屏幕常亮带来了便利,但如何平衡性能与功耗一直是开发者关注的重点。Android 14在电源管理方面进行了多项优化:

  1. Adaptive Charging智能充电:根据用户的充电习惯优化充电速率,延长电池寿命。

  2. 改进的后台管理:更严格地控制后台进程,减少不必要的资源消耗。

  3. 显示优化:针对OLED屏幕的优化,以及自适应亮度和可变刷新率的改进。

  4. 硬件-软件协同:操作系统与硬件组件的深度整合,实现更高效的电源利用。

这些优化使得Android 14在保持屏幕常亮的同时,仍能实现15-20%的电池续航提升。

04

实际应用场景

屏幕常亮技术在多个场景下都能发挥重要作用:

  • 视频播放:在观看视频时保持屏幕常亮,提供不间断的观看体验。
  • 导航应用:在导航过程中防止屏幕自动关闭,确保用户能够持续获取路线信息。
  • 阅读应用:在阅读电子书或文档时保持屏幕常亮,模拟纸质书的阅读体验。
  • 语音控制应用:在使用语音助手时保持设备唤醒状态,提高交互效率。

通过合理使用屏幕常亮技术,开发者可以为用户带来更加便捷和沉浸式的使用体验。同时,也要注意在适当的时候释放唤醒锁,避免过度耗电。

Android 14的屏幕常亮技术不仅提供了更灵活的控制方式,还通过系统级优化解决了功耗问题。无论是原生应用开发还是Web应用开发,都可以充分利用这一特性,为用户带来更多实用功能。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号