Android提供的系统服务之--PowerManager(电源服务)

Android提供的系统服务之--PowerManager(电源服务)

——转载请注明出处:coder-pig

本节引言:

本节主要讲解的Android为我们提供的系统服务中的:PowerManager电源管理的一个API,

用于管理CPU运行,键盘或者屏幕亮起来;不过,除非是迫不得已吧,不然的话,否则应该尽量避免

使用这个类,并且使用完以后一定要及时释放!本节并不太深入的去讲解,因为这个设计到底层的

一些东西,以后需要用到再深入研究,到时再另外写一篇blog总结!所以本节介绍的主要是

一些基本的概念,PowerManager,wakelock锁的机制等等!

本节知识点图:

代码示例:

一个管理WakeLock以及Android设备电源管理的工具类:

import android.content.Context;
import android.content.SharedPreferences;
import android.os.PowerManager;
import android.preference.PreferenceManager;

public class ManageWakeLock {
    private static PowerManager.WakeLock mWakeLock = null;
    private static PowerManager.WakeLock mPartialWakeLock = null;
    private static final boolean PREFS_SCREENON_DEFAULT = true;
    private static final boolean PREFS_DIMSCREEN_DEFAULT = false;
    private static final String PREFS_TIMEOUT_DEFAULT = "30";

    public static synchronized void acquireFull(Context mContext) {
        if (mWakeLock != null) {
             return;
        }

        PowerManager mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
        SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);

        int flags;

        flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;

        mWakeLock = mPm.newWakeLock(flags, “ManagerWakeLock”);
        mWakeLock.setReferenceCounted(false);
        mWakeLock.acquire();
    }

    public static synchronized void acquirePartical(Context mContext) {
        //Check if partial lock already exists
        if (mPartialWakeLock != null) {
            return;
        }

        PowerManager mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
        mPartialWakeLock = mPm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
                                | PowerManager.ACQUIRE_CAUSES_WAKEUP, “ManagerWakeLock”);

        mPartialWakeLock.setReferenceCounted(false);
            mPartialWakeLock.acquire();
        }
    }
    public static synchronized void releaseFull() {
        if (mWakeLock != null) {
            mWakeLock.release();
            mWakeLock = null;
        }
    }

    public static synchronized void releasePartial() {
        if (mPartialWakeLock != null) {
             mPartialWakeLock.release();
             mPartialWakeLock = null;
        }
    }

    public static synchronized void releaseAll() {
        releaseFull();
        releasePartial();
    }
}

参考资料:

http://www.open-open.com/lib/view/open1343207436974.html

http://blog.csdn.net/xieqibao/article/details/6562256

http://blog.chinaunix.net/uid-27411029-id-4040727.html

时间: 2024-10-21 03:58:08

Android提供的系统服务之--PowerManager(电源服务)的相关文章

Android提供的系统服务之--AlarmManager(闹钟服务)

Android提供的系统服务之--AlarmManager(闹钟服务) --转载请注明出处:coder-pig 本节引言: 本节主要介绍的是Android系统服务中的---AlarmManager(闹钟服务), 除了开发手机闹钟外,更多的时候是作为一个全局的定时器,通常与Service 结合,在特定时间启动其他的组件!本节就来对这个AlarmManager来进行解析 同时通过小闹钟与自动换壁纸来演示这个AlarmManager的用法,好了,开始本节的 内容吧! 本节正文: 1.概念与相关属性方法

Android提供的系统服务之--LayoutInflater(布局服务)

Android提供的系统服务之--LayoutInflater(布局服务) --转载请注明出处:coder-pig 本节引言: 本节我们只要是介绍Android系统服务中的--LayoutInflater(布局服务), 相信大家已经习惯了通过Activity.setContentView( )方法来我们的布局文件, 底层的底层还是通过这个系统的LayoutInflater来完成的! 工作原理就是使用Android内置的pull解析器来解析布局~ 而在前几天写的blog中用到的动态布局,就是用到这

Android提供的系统服务之--WindowManager(窗口管理服务)

Android提供的系统服务之--WindowManager(窗口管理服务) --转载请注明出处:coder-pig 本节引言: 本节我们来探讨下这个Android系统服务中的WindowManager(窗口管理服务), 他是显示View的最底层,好像我们的Actviity和Dialog,以及Toast的底层实现都用到 这个WindowManager,他是全局的!核心其实就是WindowManager调用addView, removeView,updateViewLayout这几个方法来显示Vi

Android提供的系统服务之--SmsManager(短信管理器)

Android提供的系统服务之--SmsManager(短信管理器) --转载请注明出处:coder-pig SmsManager相关介绍以及使用图解: 当然为了方便各位,把代码粘一粘吧,就不用麻烦大家写代码了: 有需要的时候就复制粘贴下吧! 1)调用系统发送短信的功能: public void SendSMSTo(String phoneNumber,String message){ //判断输入的phoneNumber是否为合法电话号码 if(PhoneNumberUtils.isGloba

Android提供的系统服务之--TelephonyManager(电话管理器)

Android提供的系统服务之--TelephonyManager(电话管理器) 转载请注明出处--coder-pig TelephonyManager的作用: 用于管理手机通话状态,获取电话信息(设备信息.sim卡信息以及网络信息), 侦听电话状态(呼叫状态服务状态.信号强度状态等)以及可以调用电话拨号器拨打电话! 如何获得TelephonyManager的服务对象: TelephonyManager tManager = (TelephonyManager)getSystemService(

Android提供的系统服务之--AudioManager(音频管理器)

Android提供的系统服务之--AudioManager(音频管理器) ----转载请注明出处:coder-pig AudioManager相关简介与常用方法图: 简单的使用例子: 使用Mediaplayer播放音乐,通过AudioManager调节音量大小与静音: 这里,我们需要把要播放的音频文件放到res下的raw文件夹,这个文件夹默认是没有的,需要自己创建哦! 用来放原生资源的,就是打包编译的时候不会把他变成二进制文件!!! 先来看看效果图吧: 就是播放音乐,然后调高音量的时候可以看到滑

Android提供的系统服务之--Vibrator(振动器)

Android提供的系统服务之--Vibrator(振动器) --转载请注明出处:coder-pig Vibrator简介与相关方法: 简单demo--设置频率不同的振动器 对于Vibrator用的最广泛的莫过于所谓的手机按摩器类的app,在app市场一搜,一堆,笔者随便下了几个下来瞅瞅 ,都是大同小异的,这点小玩意竟然有8W多的下载量...好吧,好像也不算多,不过普遍功能都是切换振动频率来完成 所谓的按摩效果,是否真的有效就不得而知了,那么接下来 我们就来实现一个简单的按摩器吧! 核心其实就是

Android中的系统服务(代理模式)

一,系统启动 Android设备的开机流程总得来分可以分为三部分: 加载引导程序 引导程序bootloader是开机运行的第一个小程序,因此它是针对特定的主板与芯片的.bootloader有很多种,可以使用比较流行的如redboot.uboot.ARMBoot等,也可以开发自己的引导程序,它不是Android操作系统的一部分.引导程序也是OEM厂商或者运营商加锁和限制的地方. 引导程序初始化硬件设备.创建存储器空间的映射等软件运行时所需要的最小环境:加载Linux内核镜像文件(本文只针对Andr

Android学习笔记(五一):服务Service(上)- IntentService

对于需要长期运行,例如播放音乐.长期和服务器的连接,即使已不是屏幕当前的activity仍需要运行的情况,采用服务方式.服务将通过API触发启动或者通过IPC(Interprocess Communication)连接请求触发启动.服务将一直运行直至被关闭,或者内存不足时由系统关闭.一般而言,为了节省电量,服务应进行优化减少CPU的消耗和大量网络通信.服务可用于以下的场景: 1.用户离开activity后,仍需继续工作,例如从网络下载文件,播放音乐2.无论activity出现(重现)或离开,都需