コメント
コメントの投稿
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionBootCompleted,
"android.intent.action.QUICKBOOT_POWERON",
"com.htc.intent.action.QUICKBOOT_POWERON",
"android.intent.action.PACKAGE_INSTALL",
"android.intent.action.PACKAGE_ADDED",
Intent.ActionMyPackageReplaced })]
public class BootReceiver : BroadcastReceiver
{
private static PowerManager.WakeLock _wakeLock = null;
public override void OnReceive(Context context, Intent intent)
{
//画面ロックの取得
PowerManager pm = (PowerManager)context.GetSystemService(Context.PowerService);
_wakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "BootReceiver");
_wakeLock.Acquire();
//リマインダーをセット
this.SetReminder(context);
//サービスやアプリの起動
//以前の記事でご紹介済みなので割愛
}
//Android用のリマインダー
public void SetReminder(Context context)
{
Intent alarmIntent = new Intent(context, typeof(BootReceiver));
PendingIntent pendingIntent = PendingIntent.GetBroadcast(context, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);
AlarmManager alarmManager = (AlarmManager)context.GetSystemService(Context.AlarmService);
//AlarmManagerで1時間後に実行を予約する
long fireTimeUtc = DateTimeOffset.UtcNow.AddMilliseconds(60 * 1000 * 60).ToUnixTimeMilliseconds(); //60s*1000ms*60minutes=1hour
if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
{
alarmManager.SetExactAndAllowWhileIdle(AlarmType.RtcWakeup, fireTimeUtc, pendingIntent);
}
else if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat)
{
alarmManager.SetExact(AlarmType.RtcWakeup, fireTimeUtc, pendingIntent);
}
else
{
alarmManager.Set(AlarmType.RtcWakeup, fireTimeUtc, pendingIntent);
}
//確実に指定時刻に実行したい場合は
//AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(fireTime, pendingIntent);
//alarmManager.SetAlarmClock(alarmClockInfo, pendingIntent);
}
public static void ReleaseWakeLock()
{
if (_wakeLock != null)
{
_wakeLock.Release();
}
}
}
項目 | 説明 |
---|---|
RtcWakeup (値0) | UTC時刻を指定する (スリープ状態のときは電源をONにしてくれる) |
Rtc (値1) | UTC時刻を指定する |
ElapsedRealtimeWakeup (値2) | 端末が起動してからの経過時間で指定する (スリープ状態のときは電源をONにしてくれる) |
ElapsedRealtime (値3) | 端末が起動してからの経過時間で指定する |
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。