Da war ich auch schon unterwegs. Es ist alles der totale schrott, ich meine das kann doch nicht so schwer sein einen Alarm genau auf die Minute zu setzen und das Gerät vorher irgendwie aufzuwecken.
Mein Code sieht wie folgt aus:
*SetAlarm *
public void setAlarm(Context context, String datum, int hours, int minutes)
{
Calendar myCalendar = parseMyStringToDate(datum);
myCalendar.set(Calendar.SECOND, 0);
myCalendar.set(Calendar.MINUTE, minutes);
myCalendar.set(Calendar.HOUR_OF_DAY, hours);
Log.i("RCService: ", "Alarm wird gesetzt.");
AlarmManager alarmManager = (AlarmManager) getContext().getSystemService(getContext().ALARM_SERVICE);
Intent i = new Intent(getContext(), WakeLockKiller.class);
i.setAction(normalNotifyAction);
PendingIntent pi = PendingIntent.getBroadcast(getContext(), 0, i, 0);
AlarmScheduler alarmScheduler = new AlarmScheduler(alarmManager, pi, myCalendar);
Log.i("RCService: ", "Alarm wurde gesetzt: " + myCalendar.getTimeInMillis());
}
AlarmScheduler
public class AlarmScheduler
{
public AlarmScheduler(AlarmManager am, PendingIntent pi, Calendar calendar)
{
schedule(am, pi, calendar);
}
private static void schedule(AlarmManager am, PendingIntent pi, Calendar calendar)
{
Log.e("AlarmScheduler: ", "Alarm wurde gesetzt");
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);
} else {
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);
}
}
}
Broadcast-Receiver
public class WakeLockKiller extends WakefulBroadcastReceiver
{
private static final String normalNotifyAction = "myaction"; //(Absichtlich veränder)
@Override
public void onReceive(Context context, Intent intent)
{
Log.e(getClass().getName(), "Received");
if(intent.getAction().equals(normalNotifyAction))
{
Intent startSynchMen = new Intent(context, SynchMen.class);
startSynchMen.setAction(intent.getAction());
startWakefulService(context, startSynchMen);
}
}
}
Und in der Manifest ist auch alles in Orndung, alles eingetragen. Es funktioniert ja, nur manchmal will mein Gerät einfach schlafen und nicht arbeiten .
Gibt es vielleicht eine andere Lösung einen Alarm vielleicht selber zu programmieren ?
Das man irgendwie einen Thread schlafen legt oder ähnliches.
Hab es damals mit einem eigenen Thread versucht, der einfach jede Minute eine Datenbankabfrage gestartet hat um zu überprüfen ob da irgendwas vorliegt (Ein Alarm), hat leider auch nicht funktioniert und es war sehr ineffizient. Dann habe ich noch versucht einen "repeatAlarm" zu setzten der jede minute ebenfalss wie oben das gleiche macht. Es war genau der selbe Schrott. Langsam reicht es mir, sitze schon seit einem Monat an einer Lösung. Ich meine wie macht es denn sonst der hauseigene Wecker von android?
Liebe Grüße
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.