`
fosa0989
  • 浏览: 110538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Power Manager分析[转载]

阅读更多

一、Android的电源管理部分文件路径如下:

frameworks/base/core/java/android/os/PowerManager.java

     PowerManager类被APP调用,控制电源设备状态切换等


frameworks/base/services/java/com/android/server/PowerManagerService.java

    PowerManagerService属于PowerManager的核心


frameworks/base/core/java/android/os/Power.java

     Power与jni接口交互


frameworks/base/core/jni/android_os_power.cpp

     此文件是PowerManager的jni接口实现


hardware/libhardware/power/power.c

     PowerManager的HAL代码,与电源管理的kernel交互



二、android.os.PowerManager类主要接口:

Android 提供了现成 android.os.PowerManager , 该类用于控制设备的电源状态的切换 .

该类对外有三个接口函数 :

         1、void goToSleep(long time); // 强制设备进入 Sleep 状态

         Note:

尝试在应用层调用该函数 , 却不能成功 , 出现的错误好象是权限不够 , 但在 Framework 下面的 Service 里调用是可以的 .

         2、newWakeLock(int flags, String tag);// 取得相应层次的锁

flags 参数说明 :

PARTIAL_WAKE_LOCK: Screen off, keyboard light off

SCREEN_DIM_WAKE_LOCK: screen dim, keyboard light off

SCREEN_BRIGHT_WAKE_LOCK: screen bright, keyboard light off

FULL_WAKE_LOCK: screen bright, keyboard bright

ACQUIRE_CAUSES_WAKEUP: 一旦有请求锁时强制打开 Screen keyboard light

ON_AFTER_RELEASE: 在释放锁时 reset activity timer

Note:

如果申请了 partial wakelock, 那么即使按 Power , 系统也不会进 Sleep, Music 播放时

如果申请了其它的 wakelocks, Power , 系统还是会进 Sleep

         3、void userActivity(long when, boolean noChangeLights);//User activity 事件发生 , 设备会被切换到 Full on 的状态 , 同时Reset Screen off timer.

Sample code:

         PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);

PowerManager.WakeLock wl = pm.newWakeLock (PowerManager.SCREEN_DIM_WAKE_LOCK, “My Tag”);

         wl.acquire();

         …….

         wl.release();



Note:

1. 在使用以上函数的应用程序中 , 必须在其 Manifest.xml 文件中加入下面的权限 :

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

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

2. 所有的锁必须成对的使用 , 如果申请了而没有及时释放会造成系统故障 . 如申请了 partial wakelock, 而没有及时释放 , 那系统就永远进不了 Sleep 模式 .

分享到:
评论

相关推荐

    Android Power Manager

    Android Power Manager Android Power Manager 是 Android 系统下的电源管理框架,主要通过锁和定时器来切换系统的状态,降低系统的功耗。 Android 提供了现成的 android.os.PowerManager 类,用于控制设备的电源...

    Android Power Management Framework

    Android Power Management Framework是Android操作系统中的关键组件,它专注于优化移动设备的电源消耗,以确保电池寿命和用户体验。在移动设备上,尤其是智能手机,电源管理至关重要,因为电池容量有限。如果电源...

    android-log power 各包电量分析

    android-log power 各包电量分析

    gnome-power-manager-2.24.1.tar.gz_GNOME Power manager_gnome-powe

    gnome-power-manager是GNOME桌面环境中的一个关键组件,它专为Linux系统设计,用于管理和优化用户的电源使用。这个程序提供了对笔记本电脑、台式机以及其他支持电源管理设备的控制,帮助用户节省电力并延长电池寿命...

    Android Power Management

    Android Power Management主要目标是通过有效的策略和机制降低系统功耗,确保设备在不同使用场景下都能达到最佳能效。以下是对Android电源管理从应用层、框架层到内核层的详细解析。 在**应用层**,开发者可以利用`...

    powermanagerservice

    PowerManagerService.java

    android 通过Power事件实现休眠和唤醒

    我们将以"PowerDemo"为例,介绍如何创建一个简单的Android应用来实现这一功能,但需要注意的是,由于涉及到系统级操作,这个demo可能需要设备具有root权限才能正常工作。 首先,理解Power事件。在Android中,Power...

    通过Android trace文件分析死锁ANR实例过程

    另一方面,"Binder_B"线程(tid=85)在调用`toString()`方法时也处于等待状态,它需要`&lt;0x41a7e420&gt;`(即`PowerManagerService$DisplayBlankerImpl`)的锁,而这把锁当前由"PowerManagerService"线程持有。...

    Power Manager for Mac(电源管理工具) v5.3.0

    Power Manager是一款能够帮助大家管理电脑电源,降低Mac电脑的能源成本的软件。使用这款软件大家可以更加便捷有效的控制好Mac自动启动、关机或睡眠,从而达到有效节省电源的目的。

    Intel Intelligent Power Node Manager 3.0 External Interface

    Intel Intelligent Power Node Manager 3.0 External Interface Specification Using IPMI Contents 1 Introduction 2 Intel Management Engine (Intel ME) IPMI Interface 3 Intel ME Intel NM IPMI Interface 4 ...

    android on power

    ### Android在Power架构上的移植与应用 #### 一、Android简介及特性 **Android** 是一个基于Linux内核的操作系统,由Google开发并维护。它不仅包括操作系统内核,还包括中间件以及关键的移动应用程序。Android的...

    Dell-Power-Manager-Service_H2VH9_WIN64_3.4.0_A00_01.exe

    戴尔笔记本自带的电源管家,可以控制电池最大充电量,例如将电池充电到80%即停止充电,电池电量低于70%开始充电等,可以从一定程度上保护电池

    Android Power Management.pdf

    - `frameworks/base/services/java/com/android/server/PowerManagerService.java` - `frameworks/base/core/java/android/os/Power.java` - `frameworks/base/core/jni/android_os_power.cpp` - `hardware/...

    Power manager for LiteOS 轻鸿蒙电源管理服务.zip

    【鸿蒙电源管理服务——Power Manager for LiteOS详解】 在华为的鸿蒙系统(HarmonyOS)中,电源管理是一项至关重要的服务,特别是在其轻量级版本——LiteOS上。Power Manager for LiteOS是专门为LiteOS设计的电源...

    linux power manager

    结合这篇文章的图 http://blog.csdn.net/android_huber/article/details/7399476

    PowerBI数据分析与数据可视化教案.pdf

    "PowerBI数据分析与数据可视化教案.pdf" 本资源是Power BI数据分析与数据可视化的教案,旨在让学生掌握Power BI的数据分析和可视化方法。课程共分为9章,分别介绍了Power BI的基础知识、数据连接、数据分析、报表...

    PowerBI商业数据分析-教学大纲.docx

    「PowerBI 商业数据分析」教学大纲 本课程教学大纲旨在帮助学生快速掌握 Power BI 的相关知识,从基础的架构和操作界面开始,到数据处理的流程和难易程度,涵盖了 Power BI 的各模块知识,包括数据准备模块 Power...

    Android开发通过BroadcastReceiver监听Home,电源Power,和音量变化Volume键

    在Android开发中,有时我们需要对用户的操作进行监听,比如用户按下Home键、电源键或音量键等。本文将详细讲解如何使用BroadcastReceiver来监听这些关键事件,并介绍相关的Android基础知识。 首先,...

    Power BI商业数据分析整套课件完整版ppt教学教程最全电子讲义教案(最新).pptx

    - **Power BI 移动版**:适用于iOS、Android和Windows设备的应用,使用户能够随时随地查看和交互数据报表。 **4. 安装与使用Power BI Desktop** 安装Power BI Desktop主要有两种方式:通过Windows 10的Microsoft ...

Global site tag (gtag.js) - Google Analytics