android 如何让手机进入休眠状态,又如何唤醒电脑睡眠快捷键

android如何唤醒睡眠状态?
<a data-traceid="question_detail_above_text_l&&
在做一个定时进入睡眠和唤醒功能,现在睡眠已经实现了,可不知道怎么唤醒,符代码:
//这是进入睡眠
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
System.out.println(&go to sleep: &);
pm.goToSleep(SystemClock.uptimeMillis());
//用闹钟唤醒,未能实现??
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, EBroadcastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
long now = System.currentTimeMillis();
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, now, 10000, pi);
PowerManager.WakeLock不知道能不能满足你的需求?Android 手机休眠后怎么保持service在后台继续运行
[问题点数:40分,结帖人wandeying]
本版专家分:0
结帖率 50%
CSDN今日推荐
本版专家分:370
本版专家分:370
本版专家分:2988
本版专家分:20
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐后使用快捷导航没有帐号?
只需一步,快速开始
查看: 9896|回复: 15
在线时间591 小时G币208 最后登录注册时间帖子阅读权限60UID5610210
大学本科, 积分 680, 距离下一级还需 20 积分
TA的每日心情无聊 16:18签到天数: 20 天[LV.4]偶尔看看III
G币208 最后登录注册时间
马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。
已有帐号?   下载游戏和软件,请【】进入机锋市场!
本帖最后由 loveybb 于
13:25 编辑
求助,Android系统保持唤醒时间太长,太耗电了。双清了以后还是一样。不知道有没有人知道怎么解决呢?
在线时间5 小时G币77 最后登录注册时间帖子阅读权限80UID8352192
研究生, 积分 1301, 距离下一级还需 399 积分
TA的每日心情郁闷 13:48签到天数: 8 天[LV.3]偶尔看看II
G币77 最后登录注册时间
直接就可以设置的,你在设置里面找下
农业物联网http://www.sirifo.com/
在线时间1548 小时G币7726 最后登录注册时间帖子阅读权限100UID2102268
博士, 积分 2543, 距离下一级还需 957 积分
TA的每日心情郁闷 21:21签到天数: 132 天[LV.7]常住居民III
G币7726 最后登录注册时间
上LBE安全大师 切断唤醒可以解决
在线时间591 小时G币208 最后登录注册时间帖子阅读权限60UID5610210
大学本科, 积分 680, 距离下一级还需 20 积分
TA的每日心情无聊 16:18签到天数: 20 天[LV.4]偶尔看看III
G币208 最后登录注册时间
zhoutingxue123 发表于
直接就可以设置的,你在设置里面找下
设置里面怎么设置呢?
在线时间591 小时G币208 最后登录注册时间帖子阅读权限60UID5610210
大学本科, 积分 680, 距离下一级还需 20 积分
TA的每日心情无聊 16:18签到天数: 20 天[LV.4]偶尔看看III
G币208 最后登录注册时间
上LBE安全大师 切断唤醒可以解决
没root也可以吗?
在线时间0 小时G币0 最后登录注册时间帖子阅读权限50UID
大学专科, 积分 282, 距离下一级还需 118 积分
TA的每日心情衰 07:50签到天数: 2 天[LV.1]初来乍到
G币0 最后登录注册时间
这种已经很好了啊
在线时间560 小时G币286 最后登录注册时间帖子阅读权限60UID403190
大学本科, 积分 510, 距离下一级还需 190 积分
TA的每日心情开心 19:29签到天数: 12 天[LV.3]偶尔看看II
G币286 最后登录注册时间
我的一开始也这样,掉电哗哗的,三清不管用,最后四件套解决了
在线时间0 小时G币384 最后登录注册时间帖子阅读权限80UID6469912
研究生, 积分 1557, 距离下一级还需 143 积分
TA的每日心情擦汗 12:07签到天数: 138 天[LV.7]常住居民III
G币384 最后登录注册时间
我的也是好费电。。
在线时间722 小时G币250 最后登录注册时间帖子阅读权限90UID2467883
硕士, 积分 1840, 距离下一级还需 660 积分
该用户从未签到
G币250 最后登录注册时间
我的也是这样&&
在线时间29 小时G币9 最后登录注册时间帖子阅读权限60UID5443456
大学本科, 积分 522, 距离下一级还需 178 积分
TA的每日心情郁闷 17:31签到天数: 5 天[LV.2]偶尔看看I
G币9 最后登录注册时间
这不还好么,另外,AOD会占用唤醒时间。
Powered byandroid休眠唤醒流程:
power按键事件上报给android系统,最终由windownmanager接收到,当有按键事件时判断是否需要休眠后唤醒系统,然后调用powermanager系统服务去写/sys/power/state节点.&&&&&&&&&&& 此节点的写函数里判断收到的内容,来执行android的休眠early_suspend/唤醒late_resume流程.
android层:
&&& private int setScreenStateLocked(boolean on)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 电源管理服务:&&& frameworks/base/services/java/com/android/server/PowerManagerService.java&&&&&&&& int err = Power.setScreenState(on);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 在文件frameworks/base/core/java/android/os/Power.java定义&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 79&&&& public static native int setScreenState(boolean on);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 具体实现在:frameworks/base/core/jni/android_os_Power.cpp&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& static int setScreenState(JNIEnv *env, jobject clazz, jboolean on);&&&&&&&&&&&&&&& set_screen_state(on);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 在文件hardware/libhardware_legacy/power/power.c中定义并实现&&&&&&&&&&&&&&&&&&& write(g_fds[REQUEST_STATE], buf, len);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 写/sys/power/state节点
&&&&&&&&&&&&&&&&&&&
向节点写内容会调用kernel/power/main.c的写函数:&&&&&&& static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr,const char *buf, size_t n)&&&&&&&&&&& request_suspend_state(state);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 调用此函数:&&& 具体实现在./kernel/power/earlysuspend.c中&&&&&&&&&&&&&&& state:&&& 为休眠则调用early_suspend_work&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& android early_suspen工作队列&&&&&&&&&&&&&&&&&&&&&&& 为唤醒则调用late_resume_work&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& android late_resume_work工作队列&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& drivers/video/samsung/s3cfb_main.c中早已经注册屏幕开关&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& register_early_suspend(&fbdev[i]-&early_suspend);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 所以&&&&&&&&&&&&&&&&&&& 为休眠则调用early_suspend_work中的屏幕休眠函数:&&&&&&&&&&&&&&&&&&&&&&&&&&& s3cfb_early_suspend()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& backlight_on()----&s3cfb_backlight_on()&&&&&&&&&&&&&&&&&&& 在文件arch/arm/plat-s5p/dev-fimd-s5p.c中定义&&& npd-&backlight_on = s3cfb_backlight_&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& s3cfb_backlight_on中直接操作用来控制lcd的gpio关闭屏幕&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& arch/arm/mach-exynos/setup-fb-s5p.c&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& 为唤醒时调用late_resume_work中的屏幕唤醒函数:&&&&&&&&&&&&&&&&&&&&&&&&&&& s3cfb_late_resume()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& backlight_off()----&s3cfb_backlight_off()&&&&&&&&&&&&&&& 在文件arch/arm/plat-s5p/dev-fimd-s5p.c中定义&&& npd-&backlight_off = s3cfb_backlight_&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& s3cfb_backlight_off中直接操作用来控制lcd的gpio使能屏幕&&&&&&&&&&&&&&& &&&&&&&&&&&&&&& 执行完所有的early_suspend后执行解锁main_wake_lock,以便休眠.&&&&&&&&&&&&&&& wake_unlock(&main_wake_lock);&&&&&&&&&&&&&&&&&&& mod_timer(&expire_timer, jiffies + has_lock);&&&&&&&&&&&&&&&&&&&&&&& 在文件/kernel/power/wakelock.c中&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 此函数将启用expire_timer定时器,定时器内容即expire_wake_locks&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 340 static DEFINE_TIMER(expire_timer, expire_wake_locks, 0, 0);
有四种方式可以引起休眠&&&&&&& ①在wake_unlock()中, 如果发现解锁以后没有任何其他的wake lock了, 就开始休眠&&&&&&& ②在定时器到时间以后, 定时器的回调函数会查看是否有其他的wake lock, 如果没有, 就在这里让系统进入睡眠&&&&&&& ③在wake_lock() 中, 对一个wake lock加锁以后, 会再次检查一下有没有锁,&&&&&&&&&&&& 刚加上锁,为什么要检查,有用吗????&&&&&&& ④按power键,调用earlysuspend.使系统或应用程序释放锁.从而调用上述三个函数进入休眠&&& if(has_lock ==0)&&&&&&& queue_work(suspend_work_queue,&suspend_work);&&& 由DECLARE_WORK(suspend_work, suspend);知道,队列中的内容即suspend函数.&&&&&&&&&&& suspend();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& kernel/power/wakelock.c&&&&&&&&&&&&&&& pm_suspend(requested_suspend_state);&&&&&&&&&&&&&&&&&&& enter_state(state);&&&&&&&&&&&&&&&&&&& kernel/power/suspend.c&&&&&&&&&&&&&&&&&&&&&&& suspend_devices_and_enter(state);&&&&&&&&&&&&&&&&&&&&&&&&&&& suspend_enter(state);& & & & & & & & & & & & & & & & suspend_ops-&enter(state);& & & & & & --&调用平台相关的休眠函数,定义在中arch/arm/plat-samsung/pm.c:379:static const struct platform_suspend_ops s3c_pm_ops
                          即s3c_pm_enter
            s3c_pm_arch_stop_clocks()  --&               休眠时执行的的最后一个函数.系统停在此处,等待中断或rtc等唤醒源唤醒.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 从此处开始唤醒流程&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& enable_nonboot_cpus();&&&&&&&&&&&&&&&&&&&&&&&&&&& suspend_test_start();&&&&&&&&&&&&&&&&&&& ----------&kernel已经被唤醒,当按键或中断来临后可以执行中断函数,上报唤醒事件.对于外部中断来说,上报power按键事件.&&&&&&&&&&&&&&&&&&&&&&& pm_restore_gfp_mask();&&&&&&&&&&& kernel/power/suspend.c&&&&&&&&&&&&&&&&&&& enter_state(state);&&&&&&&&&&&&&&&& pm_suspend(suspend_state_t state);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& suspend();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& kernel/power/wakelock.c&&&&&&&&&&&
阅读(...) 评论()}

我要回帖

更多关于 休眠状态无法唤醒 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信