再起動後に保持する必要がある一連のアラームがあります。ブートレシーバーで使用してみましたが、再起動しません。ブートレシーバーと、その後すべてのアラームを再開する方法を理解しているかどうかはわかりません。通知用のレシーバーはすでに1つありますが、同じレシーバーを使用できるかどうか、または新しいレシーバーが必要かどうかがわかりません。
誰かが私に良いチュートリアルを教えたり、私を助けたりできますか?
乾杯
コード:
DatabaseHandler db = new DatabaseHandler(this);
List<UAlarm> alarms = db.getAllAlarms();
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
for (UAlarm ua : alarms) {
String programme = ua.getTitle();
String startTime = ua.getStart();
String endTime = ua.getEnd();
String nowPlaying = ua.getChannel();
db.addAlarm(new UAlarm(programme, startTime, endTime, nowPlaying, ""));
final UAlarm ut = new UAlarm();
ut.setTitle(programme);
ut.setStart(startTime);
ut.setEnd(endTime);
ut.setChannel(nowPlaying);
ut.setId(db.getLastEntered());
String [] bla = startTime.split(":");
int hour = Integer.parseInt(bla[0].trim());
int minute = Integer.parseInt(bla[1].trim());
minute -= 2;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
Intent intenta = new Intent(this, NotificationMenu.class);
String name = programme;
intenta.putExtra("name", name);
intenta.putExtra("id", db.getLastEntered());
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, ua.getId(),
intenta, PendingIntent.FLAG_CANCEL_CURRENT);
am.set(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(), pendingIntent);
}
}
notificationMenuが通知であるため、AlarmManagerを使用しています
ブートレシーバーと、その後すべてのアラームを再開する方法を理解しているかどうかはわかりません。
AlarmManager
でsetRepeating()
(または何でも)を呼び出すには、コードを呼び出すだけです。
たとえば、 このサンプルプロジェクト では、PollReceiver
は_BOOT_COMPLETED
_を受け取るように設定されています。 onReceive()
では、アラームを再スケジュールします。
_package com.commonsware.Android.schedsvc;
import Android.app.AlarmManager;
import Android.app.PendingIntent;
import Android.content.BroadcastReceiver;
import Android.content.Context;
import Android.content.Intent;
import Android.os.SystemClock;
public class PollReceiver extends BroadcastReceiver {
private static final int PERIOD=5000;
@Override
public void onReceive(Context ctxt, Intent i) {
scheduleAlarms(ctxt);
}
static void scheduleAlarms(Context ctxt) {
AlarmManager mgr=
(AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(ctxt, ScheduledService.class);
PendingIntent pi=PendingIntent.getService(ctxt, 0, i, 0);
mgr.setRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + PERIOD, PERIOD, pi);
}
}
_