如何唤醒Android手机从睡眠?

如何唤醒Android手机从睡眠(暂停到MEM)可编程? 我不想获取任何唤醒锁,这意味着电话进入“真正的”睡眠与禁用CPU。 我想我可以使用某种RTC(实时时钟)机制?

有没有人有任何例子?

谢谢。

Solutions Collecting From Web of "如何唤醒Android手机从睡眠?"

为了让活动唤醒设备,而不需要密码/刷卡,您只需要添加几个标志。 为了得到这个,包括你的代码:

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

这会唤醒您的应用程序活动。

我刚刚写了一个应用程序,可以做到这一点,这里是一些示例代码:首先,我创build一个AlarmManager并设置一个特定时间的警报:

 AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 15); calendar.set(Calendar.MINUTE, 30); calendar.set(Calendar.SECOND, 0); // if the time is before now then add one day to it if(calendar.getTimeInMillis() < System.currentTimeMillis()) calendar.setTimeInMillis(calendar.getTimeInMillis()+86400000); manager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 0); 

我需要一个BroadcastReciever来接收这个警报。 为此,我必须把我的清单:

 <application ...> <receiver android:name="hu.bendaf.example.AlarmReceiver"/> ... </application> 

我也有AlarmReciever类,它开始我的主要活动接收:

 public class AlarmReceiver extends BroadcastReceiver { public static final String WAKE = "Wake up"; @Override public void onReceive(Context context, Intent intent) { //Starting MainActivity Intent myAct = new Intent(context, MainActivity.class); myAct.putExtra(WAKE, true); myAct.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(myAct); } } 

在我的Activity的onCreate函数中我有:

 // Wake up phone if needed if(getIntent().hasExtra(AlarmReceiver.WAKE) && getIntent().getExtras().getBoolean(AlarmReceiver.WAKE)){ this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); } 

此代码在下午15:30:00(不pipe是今天还是明天)唤醒我的电话。

使用AlarmManager在您想要做某些工作的时间广播一个意图,并唤醒设备。 在BroadcastReceiver中,要么做你需要做的工作(如果它很短),要么获得一个WakeLock(可能通过一个单例),启动一个服务,使服务完成工作,然后让服务释放WakeLock。

你可以在这里阅读: https : //groups.google.com/forum/#!topic/android-developers/5–QRAPlFL0