`
fosa0989
  • 浏览: 110195 次
  • 性别: 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自动启动、关机或睡眠,从而达到有效节省电源的目的。

    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商业数据分析-教学大纲.docx

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

    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开发通过BroadcastReceiver监听Home,电源Power,和音量变化Volume键

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

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

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

    win8或者win8.1安装power management电源管理软件

    TinkPad Power Management是一款专为ThinkPad笔记本电脑设计的电源管理软件,旨在帮助用户优化系统性能,同时延长电池使用时间。这款软件的6.65版本提供了更精细的控制选项,以适应不同用户的需求。 1. **TinkPad ...

Global site tag (gtag.js) - Google Analytics