Hallo Zusammen,
es gibt relativ wenig Informationen darüber wie der AlarmManager genutzt werden kann.
Ich habe zwei russische Berichte darüber gefunden, allerdings für XE5 und die passen auch nicht zu mein Vorhaben.
Ich möchte das der AlarmManager alle 30 Sekunden ein Event feuert. Über den AlarmManager deshalb weil wen die App beendet
wird würde der AlarmManager die App starten und den event feuern. Genau darum geht es.
Dazu muss man ein BroadcastReceiver registrieren der auf den Event reagiert. Doch wie registriert man so ein BroadcastReceiver und wie setzt man die Filter damit ein Event gefeuert wird?
Das sind meine Code schnipsel bis jetzt.
Delphi-Quellcode:
const intentAction = 'de.firma.action.CHECK_ACTIVE';
function TFormMain.getPendingIntent:JPendingIntent;
var intent : JIntent;
begin
intent := TJIntent.Create;
intent.setAction( StringToJString( intentAction ) );
Result := TJPendingIntent.JavaClass.getBroadcast( TAndroidHelper.Context, 0, intent, 0 );
end;
function TFormMain.DateTimeLocalToUnixMSecGMT(const ADateTime: TDateTime): Int64;
begin
Result := DateTimeToUnix(ADateTime) * MSecsPerSec - Round(TTimeZone.Local.UtcOffset.TotalMilliseconds);
end;
procedure TFormMain.setAlarm;
var penIntent : JPendingIntent;
begin
penIntent := getPendingIntent;
TAndroidHelper.AlarmManager.cancel( penIntent );
TAndroidHelper.AlarmManager.&set(TJAlarmManager.JavaClass.RTC_WAKEUP, DateTimeLocalToUnixMSecGMT(IncSecond(Now,30)), penIntent );
end;
Gruß Kostas