Właśnie napisałem aplikację, która może to zrobić, tu jest jakiś przykładowy kod: Najpierw tworzę AlarmManager i ustawić alarm na określony czas:
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);
muszę BroadcastReciever otrzymywać ten alarm. Do tego muszę umieścić w moim manifeście:
<application ...>
<receiver android:name="hu.bendaf.example.AlarmReceiver"/>
...
</application>
i mam również klasę AlarmReciever, który rozpoczyna się mój główny aktywny na odbieranie:
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);
}
}
i funkcji onCreate Moja aktywność w mam:
// 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);
}
Ten kod budzi mój telefon o godzinie 15:30:00 (jest dziś lub jutro).
Kiedy dokładnie chcesz go obudzić? Po pewnym czasie oczekiwania? W określonym dniu i czasie? –
Czy znalazłeś rozwiązanie? Czy uważasz, że jedna z odpowiedzi jest przydatna? – bendaf
Jeśli znajdziesz odpowiedź na swoje pytanie, zaakceptuj jedną z poniższych lub zmodyfikuj swoje pytanie, aby móc Ci pomóc. – bendaf