‘壹’ android系统后台唤醒怎么关闭
Android 系统支持应用程序及服务在待机前保存程序运行状态,如待机前关闭文件读写、usb 操作、暂停音乐播放;也支持唤醒后的程序状态恢复,如恢复打开文件进行读写操作,恢复 usb 操作、恢复音乐播放等。这些状态的保存和恢复功能可以保证系统在待机唤醒后能正常工作。
主要提供两种方式:
1、待机广播消息和唤醒广播消息。
2、Wakelock 锁机制。
分为两个部分说明一下:
1、android 系统待机处理机制
待机广播消息和唤醒广播消息
系统在 PowerManagerService 类中注册了 2 个广播分别用于待机前和唤醒后发送。
void initInThread(){
//唤醒后:
mScreenOnIntent=newIntent(Intent.ACTION_SCREEN_ON);//唤醒后发送
mScreenOnIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
//待机前:
mScreenOffIntent=newIntent(Intent.ACTION_SCREEN_OFF);//待机时发送
mScreenOffIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
}
这里顺带说明一下广播接收的优先级问题:
接收者按照在 Manifest.xml 文件中设置的接收顺序依次接收Intent,顺序执行的,接收的优先级可以在系统配置文件中设置:
声明在intent-filter元素的android:priority 属性中,数值越大优先级别越高,其取值范围为-1000到1000。当然也可以在调用IntentFilter对象的setPriority()方法进行设置
Wakelock 锁机制:
应用程序可以通过申请 wakelock 锁的机制来对系统是否待机作出投票,当有任何一个应用申请了 wakelock 锁,待机时没有释放掉,系统是不会进入待机的,直到所有应用的 wakelock 锁都释放掉了,才会进入待机。
‘贰’ Android OS进程长时间处于“保持唤醒状态”
在设置→开发人员选项里修改→唤醒
‘叁’ Android操作系唤醒耗电异常怎么办 如何解决耗电异常
Android系统耗电异常解决办法如下:
关机。使用原装充电器为手机充电,直到充满,而且充电期间不能开机。
电池充满之后在不拔电源的前提下开机,进系统之后使用“re文件管理器”或者“文件大师”等同类型的工具删除/data/system/batterystats.bin这个文件(batterystats.bin这个文件是android系统记录的包括电压在内的各种电池信息,删除这个文件之后系统会重新统计这个电池的使用信息)
拔下电源,正常使用手机直到自动关机,在等待1~2分钟之后再次开机,把剩余电量全部用尽。
关机状态下重新为手机电池充电,充满后即可开始正常使用,此时手机已经重新获取了当前电池的电量信息。
‘肆’ android gsensor 休眠震动唤醒功能如何实现
一、唤醒源
设备休眠后,通过触发唤醒源使设备恢复正常工作模式。设备唤醒源有多种,对于Android设备常见的就有PowerKey、来电唤醒、Alarm唤醒等。
唤醒源的实现处于内核空间,本文重点讨论下PowerKey作为唤醒源的具体实现。
二、PowerKey唤醒源
PowerKey唤醒设备的原理,本质其实就是中断。
PowerKey连接到CPU的一个输入(Input)引脚(Pin)上,该Pin运行在中断模式上。一旦PowerKey按下,引发Pin中断;而该中断具有唤醒CPU的功能,于是设备得以唤醒。
三、PowerKey对应的Pin
Configuration
和PowerKey相连的Pin的具体配置位于板级dts文件中,比如如下配置:
arch/arm/boot/dts/xxxxx.dts
power-key {
/** 是CPU的哪个Pin */
gpios = <&gpio0 GPIO_A5 GPIO_ACTIVE_LOW>;
/** Key code */
linux,code = <116>;
/** 起个名字 */
label = "power";
/** 该Pin具有wakeup的功能 */
gpio-key,wakeup;
};
着重说下linux,code =
<116>,116怎么来的?
对于键盘,每一个按键都有唯一的编码,在Linux中,编码值位于:
input.h (kernelincludeuapilinux)
/*
* Keys and buttons
*/
#define KEY_RESERVED 0
#define KEY_ESC 1
#define KEY_BACKSPACE 14
#define KEY_TAB 15
#define KEY_POWER 116 /* SC System Power Down */
可知,PowerKey的编码也在该文件中,且编码值为116;一旦按下PowerKey,该值作为键值传到input_event结构体的code成员变量中:
input.h (kernelincludeuapilinux)
/*
* The event structure itself
*/
struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};
之后我们会写个Linux应用程序读取code值。
‘伍’ 怎样让android系统休眠啊,关屏后还一直唤醒着,很耗电
让android系统休眠,关屏后还一直唤醒着,很耗电的解决办法如下:
系统运行的时候有很多软件后台运行着,可以卸载一些不常用的软件,来减低系统的负荷。
可以将系统屏幕关闭时间减少,来减少屏幕开启时间过长,打开手机设置,点击显示,找到屏幕自动关闭选项,将时间设置到最低。
‘陆’ android系统睡眠状态如何唤醒线程和广播
不能!
(不能手动唤醒,因为肯定需要点亮屏幕(手动点亮屏幕),所以并不是真睡眠状态)。
只能提前设置,比如闹钟,具体到“广播”即收音机,那么只建议使用第三方程序,如“蜻蜓FM”,就像闹钟可以定时自动开启。
如果是自己造,相当于重新编个程序出来,需要掌握大量专业性的东西,得不偿失
‘柒’ 安卓手机双击唤醒屏幕怎么实现的
可以通过设置来完成,以魅族手机为例,具体操作方法如下:
1、在手机主界面打开设置。
‘捌’ java代码怎么控制android休眠和唤醒
唤醒:android.intent.action.SCREEN_ON (代码)
休眠:android.intent.action.SCREEN_OFF (代码)
android系统一段时间没有操作,
屏幕(screen)将从高亮(bright)变为暗淡(dim),如果再过段时间还是没有操作,屏幕(screen)从暗淡(dim)变为关闭(off).这时,系统将进入休眠.
而对于某些需要保持系统唤醒甚至屏幕唤醒的应用(比如视频播放器和音乐播放器)来说,就必须要有一个机制,使得系统不进入休眠状态,设置保持屏幕亮屏状态.
wakelock即用来实现以上目的
接下来对每一个模块具体分析:
powermanager
对应文件是android/frameworks/base/core/java/android/os/PowerManager.java
在Android中应用程序并不是直接同PowerManagerService交互的,而是通过PowerManager间接地与PowerManagerService打交道。
此文件定义了一个powermanager类.
主要实现了
1,wakelock的申请与释放
public WakeLock newWakeLock(int flags, String tag)
2,系统延时进入休眠
public void userActivity(long when, boolean noChangeLights)
3,系统强制休眠
public void goToSleep(long time)
4,屏幕亮度设置
public void setBacklightBrightness(int brightness)
5,屏幕状态查询
public boolean isScreenOn()
6,系统重启
public void reboot(String reason)
细节
wakelock的申请与释放
{@samplecode
*PowerManager pm = (PowerManager)mContext.getSystemService(
* Context.POWER_SERVICE);
*PowerManager.WakeLock wl = pm.newWakeLock(
* PowerManager.SCREEN_DIM_WAKE_LOCK
* | PowerManager.ON_AFTER_RELEASE,
* TAG);
*wl.acquire();
* // ...
*wl.release();
一共有如下几个flag来进行不一样的唤醒方式.可以根据需要设置
Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* can-off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
PROXIMITY_SCREEN_OFF_WAKE_LOCK on 距离传感器时关闭 off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright
ACQUIRE_CAUSES_WAKEUP 确保wakelock,主要用于视频播放器
ON_AFTER_RELEASE = 0x20000000 release后倒计时,关闭屏幕
...
userActivity的作用:
使系统从其他状态进入全部打开状态,比如从暗屏(dim)切换到亮屏,并重置倒计时计数器
‘玖’ android os进程长时间处于“保持唤醒状态”,什么原因
我也在找这个问题解决办法,但是很遗憾 还没有!下边有一篇文章写的比较清楚:只有飞行模式有办法解决!而且还有个问题:今天半天时间看了下流量,这个进程居然一下耗费了13M多的流量,真的不知道是什么情况!!
------------------------------以下转自网络--------------------------------
Android OS 进程耗电多的问题是否有解决办法?
简单的说就是Android手机(根据查阅,各种型号Android手机均有可能出现此情况)变得异常费电,查看电量信息,android os进程耗电最大,待机时占用到60%+的电量。
网友总结有以下特点:
1.关掉背景同步和各种谷歌服务,无效
2.用钛同步冻结各种有可能在待机时工作的服务和软件(包括各种谷歌服务),无效
3.能挪到SD卡的程序统统挪到SD卡,无效
4.关掉WLAN,GPS,数据传输,数据漫游,无效
5.打开USB调试,无效
6.充满电以后重启一次,无效
7.用CPU大师设置屏幕关闭时自动降频至384MHZ或者192MHZ,无效
8.用PLUS工具箱提高超频电压,因为不能设置1.2GHZ以上的值,尝试设置成56-800一类的若干组高电压数值,无效
9.飞行模式,有效
10.考虑到9有效,综合考虑4,因此在4的基础上,手动指定运营商为联通,并设置为2G网络,无效
11.用PLUS工具箱切换了O2,港版,新欧版等几种基带配置,无效
12.刷ROM,无效
13.用autostart关掉各种自启动关联,无效
网友分析得出的原因:
“不
正常耗电是因为android os在待机时不断唤醒设备造成的。至于具体是什么子进程在不断让android os工作,可以通过wake
lock的使用情况来确定。所以安装模拟终端,用take
wakelock的方式得到/proc/wakelock文件,然后进行查看,结果数次查看的结果都是mmc_delayed_work进程非常频繁的使
用wake lock。(1小时5000次以上)然后重启在充电和飞行模式下做同样的测试,结果mmc_delayed_work进程使用wake
lock的次数几乎可以忽略(只有几次),据此基本可以确定,是mmc_delayed_work在不插电的情况下工作不正常,不断请求CPU资源,导致了android os一直唤醒待机时的设备,造成异常耗电。此问题基本上和谷歌服务什么的没任何关系。”
那么,这种情况应该如何解决呢?这样的好点基本导致手机无法正常使用了,但纯待机都到不了12小时,希望有高人给用户些建议