Android休眠式快速开机设计讲座.doc
android的休眠和唤醒

android休眠与唤醒驱动流程分析标准linux休眠过程:●power management notifiers are executed with PM_SUSPEND_PREPARE●tasks are frozen●target system sleep state is announced to the platform-handling code●devices are suspended●platform-specific global suspend preparation methods are executed●non-boot CPUs are taken off-line●interrupts are disabled on the remaining (main) CPU●late suspend of devices is carried out (一般有一些BUS driver的动作进行)●platform-specific global methods are invoked to put the system to sleep标准linux唤醒过程:●t he main CPU is switched to the appropriate mode, if necessary●early resume of devices is carried out (一般有一些BUS driver的动作进行)●interrupts are enabled on the main CPU●non-boot CPUs are enabled●platform-specific global resume preparation methods are invoked●devices are woken up●tasks are thawed●power management notifiers are executed with PM_POST_SUSPEND用户可以通过sys文件系统控制系统进入休眠:查看系统支持的休眠方式:#cat /sys/power/state常见有standby(suspend to RAM)、mem(suspend to RAM)和disk(suspend to disk),只是standby耗电更多,返回到正常工作状态的时间更短。
android休眠与唤醒驱动流程分析

android休眠与唤醒驱动流程分析标准linux休眠过程:●power management notifiers are executed with PM_SUSPEND_PREPARE●tasks are frozen●target system sleep state is announced to the platform-handling code●devices are suspended●platform-specific global suspend preparation methods are executed●non-boot CPUs are taken off-line●interrupts are disabled on the remaining (main) CPU●late suspend of devices is carried out (一般有一些BUS driver的动作进行)●platform-specific global methods are invoked to put the system to sleep标准linux唤醒过程:●t he main CPU is switched to the appropriate mode, if necessary●early resume of devices is carried out (一般有一些BUS driver的动作进行)●interrupts are enabled on the main CPU●non-boot CPUs are enabled●platform-specific global resume preparation methods are invoked●devices are woken up●tasks are thawed●power management notifiers are executed with PM_POST_SUSPEND用户可以通过sys文件系统控制系统进入休眠:查看系统支持的休眠方式:#cat /sys/power/state常见有standby(suspend to RAM)、mem(suspend to RAM)和disk(suspend to disk),只是standby耗电更多,返回到正常工作状态的时间更短。
Android熄屏与亮屏控制

Android熄屏与亮屏控制目前做一个电子班牌的项目,需要做到熄屏与亮屏,网上找了很多,都是利用PowerManager,但是需要系统权限,这个比较麻烦,后面找到一个,测试发现可行的方案,就是利用设备管理器DevicePolicyManager执行熄屏,利用PowerManager进行亮屏,下面是步骤与代码。
1.注册:DeviceAdminReceiver<receiverandroid:name=".sreencontroldemo.Sc reenOffAdminReceiver"android:label="@string/app_name"android:permission="android.permission.BIND_DEVICE_AD MIN" ><meta-dataandroid:name="android.app.device_admin"android:resource="@xml/device_admin" /><intent-filter><actionandroid:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter></receiver>ScreenOffAdminReceiver为继承DeviceAdminReceiver:public class ScreenOffAdminReceiver extends DeviceAdminReceiver {private void showT oast(Context context, String msg) {Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();}@Overridepublic void onEnabled(Context context, Intent intent) { showToast(context,"设备管理器使能");}@Overridepublic void onDisabled(Context context, Intent intent) { showToast(context,"设备管理器没有使能");}}device_admin为device_admin.xml,在res/xml文件夹下面:<?xml version="1.0" encoding="utf-8"?><device-admin xmlns:android="/apk/res/android"><uses-policies><limit-password /><reset-password /><force-lock /></uses-policies></device-admin>2.xml代码:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".sreencontroldemo.Ma inActivity"><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="checkScreen"android:text="检测屏幕状态" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="checkScreenOn"android:text="亮屏" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="checkScreenOff"android:text="熄屏" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="checkScreenOffAndDelayOn"android:text="熄屏后再亮屏" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="checkAndTurnOnDeviceManager"android:text="去启动设备管理器权限" /></LinearLayout>3.MainActivity代码:public class MainActivity extends AppCompatActivity {private String tag = "MainActivity";private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 1:checkScreenOn(null);break;case 2:break;}}};private DevicePolicyManager policyManager;private ComponentName adminReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);adminReceiver = new ComponentName(MainActivity.this, ScreenOffAdminReceiver.class);mPowerManager = (PowerManager) getSystemService(POWER_SERVICE);policyManager = (DevicePolicyManager) MainActivity.this.getSystemService(Context.DEVICE_POLICY_SER VICE);checkAndTurnOnDeviceManager(null);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);isOpen();}private void isOpen() {if (policyManager.isAdminActive(adminReceiver)) {//判断超级管理员是否激活showToast("设备已被激活");} else {showToast("设备没有被激活");}}private PowerManager mPowerManager;private PowerManager.WakeLock mWakeLock;/*** @param view 检测屏幕状态*/public void checkScreen(View view) {PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);boolean screenOn = pm.isScreenOn();if (!screenOn) {//如果灭屏//相关操作showToast("屏幕是息屏");} else {showToast("屏幕是亮屏");}}/*** @param view 亮屏*/public void checkScreenOn(View view) {mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT _WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");mWakeLock.acquire();mWakeLock.release();}/*** @param view 熄屏*/public void checkScreenOff(View view) {boolean admin = policyManager.isAdminActive(adminReceiver);if (admin) {policyManager.lockNow();} else {showToast("没有设备管理权限");}}/*** @param view 熄屏并延时亮屏*/public void checkScreenOffAndDelayOn(View view) {boolean admin = policyManager.isAdminActive(adminReceiver);if (admin) {policyManager.lockNow();handler.sendEmptyMessageDelayed(1, 3000);} else {showToast("没有设备管理权限");}}/*** @param view 检测并去激活设备管理器权限*/public void checkAndTurnOnDeviceManager(View view) {Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMI N, adminReceiver);intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANA TION, "开启后就可以使用锁屏功能了...");//显示位置见图二startActivityForResult(intent, 0);}private void showT oast(String Str) {Toast.makeText(this, Str, Toast.LENGTH_SHORT).show();}}4.发现的问题如果手机有屏保,熄屏后再亮屏会显示屏保。
Android自动开关机实现

Android 自动开关机的实现精讲Android 自动动开机,网上的介绍就比较少了,因为它需要底层rtc时钟的支持。
前段时间根据客户需求实现了自动开关机。
在这里分享一下。
1. 简介我的实现是在设置程序里面增加一个接口,让用户设置自动开关机,这个自动开关机的设置可以参照闹钟的设置。
关于自动关机,考虑到关机的时候,用户可能正有一些重要的操作,那么应该给用户一个机会去取消当前的关机。
1)一个BroadcastReceiver, 接收如下信息:a) 自定义的ACTION_REQUEST_POWER_OFF:设置auto power off时,通过AlarmManager设置的一个RTC_WAKEUP时钟。
当到设置的关机时间时,之前设置到AlarmManager的这个action会被广播。
我们实现的这个BroadcastReceiver接收到这个消息后,就要开始power off流程b) 自定义的ACTION_REQUEST_POWER_ON:设置auto power on时,通过AlarmManager设置的一个RTC_WAKEUP时钟。
我们知道power on的应该设置一个rtc的alarm,那么这个RTC_WAKEUP的alarm是做什么的呢?其实当用户设置自动关机的时候,我设置了2个时钟,一个是RTC时钟,用于关机状态下开机;还有一个就是这个RTC_WAKEUP时钟。
之所以设置这个时钟,其实是这样的,比如说你设置了周一到周五每天7点半自动开机,而周四早上你7点就打开了手机,这样到7点半的时候,之前设置的时钟就过期了,如果不重新设置的话,周五早上是不会自动开机的。
所以这个时候,之前设置的RTC_WAKEUP就接收到了这样的信息,在重新设置下次自动开机的时钟。
c) BOOT_COMPLETE和TIMEZONE changed, Time set等时间相关的action:当系统开机完成或时间、时区发生改变时,都需要重新设置alarm。
Android(安卓系统)系统手机使用技巧

Android(安卓系统)系统手机使用技巧快速查看手机充电情况方法1:通过待机屏幕查看,众所周知Android系统设计了自动锁屏功能,当手机处于一段时间不使用的情况下就会自动熄灭背景灯,如果需要激活的话就需要按下手机的Menu键两次,但是当按下第一次之后会显示出待机界面,里面就会显示目前的手机电池充电情况。
方法2:在Android系统中的About Phone选项中的“Status”选项,里面能够看到Battery Level的选项,这就是当前手机的充电情况显示。
方法3:通过第三方软件查看,由于Android系统中并没有专门的这类软件,所以如果想要详细的查看目前手机充电情况的话就是用一款第三方的电池查看软件吧教你设置输入密码不可见用过某些需要登录的应用程序的朋友相信都知道在输入账户密码默认情况下是显示出来已经输入的密码,为了安全起见都不想旁边的人看到自己的密码,那么怎样才能设置Android手机不可见已经输入的密码呢?教你设置输入密码不显示。
关于密码的设置当然是在SecurityLocation中了,所以我们先在主屏界面上按下Menu菜单键,在弹出的进阶菜单中选择最后一项“Settings”;进入设置菜单后将滚动条向下滑动,找到“SecurityLocation”的分类,点击进入;在安全性和位置分类菜单中找到Passwords分类,其中将“Visible passwords”选项后面的勾去掉即可。
摩托罗拉BLUR账户设置二代账户设置步骤,有兴趣的朋友可以看看。
首次BLUR账户设置是在ME600等手机首次启动的时候,只要将MOTOBLUR账户绑定一个邮箱即可,当然在此之前需要进行APN网络接入点的设置。
如果在Android手机首次开机的时候将MOTOBLUR账户设置过程跳过,那么只能从其他地方进行设置。
在主屏幕中按下Menu菜单键,选择最后一项设置,在设置选项中选择MOTOBLUR账户进入下一步设置。
Android实现关机与重启的几种方式(推荐)

Android实现关机与重启的⼏种⽅式(推荐)下⾯我们来探究Android如何实现关机,重启;在Android中这种操作往往需要管理员级别,或者rootAndroid实现的⽅式如下⼏种:默认的SDK并没有提供应⽤开发者直接的Android系统关机或重启的API接⼝,⼀般来讲,实现Android系统的关机或重启,需要较⾼的权限(系统权限甚⾄Root权限)。
所以,在⼀般的APP中,如果想要实现关机或重启功能,要么是在App中声明系统权限,要么是通过某种“间接”的⽅式,⽐如⼴播或反射,来间接实现系统关机或重启。
再者,就是放在源码环境中进⾏编译,这样做有⼀个好处,就是可以直接调⽤Android中不公开的API,这是Eclipse+SDK没法达到的效果。
下⾯是我⾃⼰尝试的⼏种⽅式:⼀. 发送⼴播⽅式Broadcast是Android的四⼤基本组件之⼀,也就是我们常说的⼴播。
Android系统本⾝就包含了许多⼴播,时时刻刻在监听着系统中注册的每⼀个⼴播并随时准备响应操作。
其中,就有关于关机或重启的⼴播:Intent.ACTION_REQUEST_SHUTDOWN和Intent.ACTION_REBOOT,通过发送这两个⼴播,Android就能⾃动接收⼴播,并响应关机或重启的操作。
ACTION_REQUEST和ACTION_REBOOT是Intent.java是声明的两个字符串常量public static final String ACTION_REBOOT = "android.intent.action.REBOOT"; public static final String ACTION_REQUEST_SHUTDOWN = "android.intent.action.ACTION_REQUEST_SHUTDOWN";Intent.java位于源码/frameworks/base/core/java/android/content/Intent.java下⾯。
系统休眠设计方案

系统休眠设计方案一、为啥要有系统休眠?咱先说说为啥要搞这个系统休眠。
就好比人累了要睡觉一样,系统一直干活也会累呀。
一直开着不仅费电(如果是用电设备的话),还可能因为长时间运行出现各种小毛病,就像人一直不休息容易生病似的。
所以呢,给系统安排个休眠模式,就像是给它一个舒服的小床,让它能休息休息,等需要的时候再精神抖擞地起来干活。
二、什么时候让系统休眠?1. 根据使用时间。
我们可以设定一个时间规则。
比如说,如果系统在一段时间内(像30分钟或者1个小时,这个时间可以根据具体情况调整)没有任何操作,就像你把电脑放在那啥也不干,那它就可以进入休眠了。
这就好比你坐在那发呆好久,也该去睡个觉了。
2. 根据特定任务完成情况。
3. 根据系统负载。
要是系统的负载特别低,低到就像你在空转一个大机器,只消耗能量没干啥实事。
比如说CPU使用率低于5%,内存占用也很少,那这个时候系统就可以考虑休眠了。
这就好比一个大工厂里只有几个人在慢悠悠地打扫卫生,那还不如先把工厂关了休息会儿呢。
三、系统休眠前要做啥?1. 保存当前状态。
这就像你睡觉前要把东西都收拾好一样。
系统得把正在处理的东西,比如说打开的文件呀,正在运行的小程序呀,都记录下来。
这样当它醒来的时候,就能知道自己之前在干啥,然后接着干。
就像你睡觉前把书放在哪做个记号,醒来就能接着看。
2. 通知相关设备或程序。
如果这个系统和其他设备或者程序有联系,得告诉它们“我要休眠啦”。
就像你要睡觉了,得跟家人说一声一样。
比如说这个系统连着一个打印机,那得告诉打印机“我要休眠了,你也歇着吧,等我醒了咱们再继续合作”。
3. 关闭不必要的硬件设备(如果适用)有些系统连着一些硬件,像电脑连着摄像头或者外接硬盘。
如果这些硬件在系统休眠的时候不需要工作,那就把它们关掉。
这就好比你睡觉前把房间里不用的电器插头拔掉,安全又省电。
四、系统怎么从休眠中醒来?1. 外部唤醒事件。
可以设置一些外部的东西来叫醒系统。
Android系统的休眠

/2010/04/18/suspend-cn.html
2010/5/13
w
页码,5/13(W)
当所有的设备休眠以后, suspend_ops->prepare()会被调用, 这个函数通常会作 一些准备工作来 让板机进入休眠. 接下来Linux,在多核的CPU中的非启动CPU会被关掉, 通过注释看到是避免这 些其他的CPU造成race condion,接下来的以后只有一个CPU在运行了.
四月 18th, 2010 0 Comments/155 hits
Table of Contents
z 简介 z 国际化 z 版本信息 z 对于休眠(suspend)的简单介绍 z Linux Suspend 的流程
{ 相关的文件: { 准备, 冻结进程 { 让外设进入休眠 { Resume z Android 休眠(suspend) { 涉及到的文件: { 特性介绍
pr_debug("PM: free some memory\n");
shrink_all_memory(FREE_PAGE_NUMBER - free_pages);
if (nr_free_pages() < FREE_PAGE_NUMBER) {
error = -ENOMEM;
printk(KERN_ERR "PM: No enough memory\n");
Early Suspend Late Resume Wake Lock { Android Suspend { Early Suspend { Late Resume { Wake Lock { Suspend { Android于标准Linux休眠的区别
简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/ Android休眠式快速開機設計講座金融研訓院(台北市羅斯福路三段62號)/2011年9月9日/13:00-16:30
發票開立資料
公司抬頭統一編號
聯絡地址電話( )
發票開立□兩聯式發票□三聯式發票團體報名是否
各別開立發票
□是□否
報名者資料
1
姓名部門職務
電話mail
2
姓名部門職務
電話mail Mail
3
姓名部門職務
電話mail
課程費用
□定價一人NT2,600元
9/1 (四)前報名享早鳥優惠價
□單人報名NT 2,200 ;□團體報名2人以上每人NT 2,000;□團體報名3人以上每人NT 1,800付款方式□ATM轉帳□匯款□支票□信用卡(請填寫信用卡授權單後傳真或MAIL)
付款資訊
.請於9/1(四) 前完成匯款
.戶名:遠播資訊股份有限公司
.銀行:國泰世華中山分行
.帳號:國泰世華013帳號042-03-500039-3匯款帳號末五碼匯款日期匯款金額
/ /
課前問題
辦法希望講師說明之主題或問題(也可於報名後隨時來信提出)
問題填寫
零組件科技論壇VIP施行辦法
內容您是公司人事/教育訓練窗口嗎?可參加VIP計畫,取得同仁報名最低優惠價
勾選□我想參加VIP計畫,請寄合作方案給我□暫時不需要,謝謝□已參加聯絡人MAIL (請於此處填寫VIP合作方案寄送郵件地址)
報名注意事項
1.報名表填寫完畢請回寄至conny@或傳真(02)2585-5519
2.研討會前三天寄發上課通知單,收到方完成報名手續,未收到請電洽(02)2585-5526 # 335 蔡岡陵小姐2.手開三聯式發票,當日於上課報到處領取
2011年
信用卡授權單
已確認參加Android休眠式快速開機設計講座之課程,並以信用卡付費:
*使用信用卡付費者,請填妥資料並簽名,傳真至(02)2585-5519,謝謝!!。