I just wrote an application that can do this, here is an example code: First, I create an AlarmManager and set an alarm for a certain time:
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);
I need a BroadcastReciever to receive this signal. To do this, I have to make my manifest:
<application ...> <receiver android:name="hu.bendaf.example.AlarmReceiver"/> ... </application>
and I also have an AlarmReciever class that fires my main activity:
public class AlarmReceiver extends BroadcastReceiver { public static final String WAKE = "Wake up"; @Override public void onReceive(Context context, Intent intent) {
and in my ActivityCreate function I have:
// 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); }
This code wakes up my phone at 15:30:00 (either today or tomorrow).
bendaf
source share