アラーム:
あなたはときにアラーム火災欲しいものを駆動し、保留中の意図をスケジュールすることができます。処理は次のとおりです。
アラームを発生させる頻度を決定します。あなたは正確な時刻、今からの特定の時間(10秒で..)、または一定の間隔での特定の繰り返し(x秒/分/毎秒)で発射することができます。繰り返し処理を開始するための特定の時間を設定することもできます。間隔は可変ではありません。次に、1回のショットをして、次回に別のアラームを設定する必要があります。時間形式(ミリ秒、RTC、...)を決定するフラグを設定することもできます。最後に、アラームを発してデバイスを起床させるか、スリープ状態にして、次回の電話が起きたときに予定を立てることができます。
今、予定されているものについて。保留中の予定が予定されています。保留中の意図は、ブロードキャスト受信機を起動させる。毎日深夜1分にタイマーを鳴らすために使用するコードのクリップがいくつかあります。 (毎日更新する必要があるウィジェットを更新します。)
Intent intent = new Intent(context, DaysReceiver.class);
PendingIntent receiverIntent = PendingIntent.getBroadcast(context,
DaysConstants.UPDATE_ALARM,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Schedule the alarm!
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.cancel(receiverIntent);
if (cancelAlarm) {
MyLog.d(TAG, "setAlarm cancel");
return;
}
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
JodaTime jtime = new JodaTime();
am.set(AlarmManager.RTC_WAKEUP, jtime.afterMidnight(), receiverIntent);
//am.setRepeating(AlarmManager.RTC_WAKEUP, jtime.nowPlusMillis(30 * 1000),
// 30 * 1000, receiverIntent);
MyLog.d(TAG, "setAlarm set");
}
JodaTimeクラスは日付と時刻の計算を行います。上記のafterMidnight()ビットは、今晩深夜1分後に戻ります。このルーチンは、未解決のアラームをキャンセルするために使用することができます。
受信機は通常の放送受信機であり、他の放送受信機で行うことができるものは何でもできます。 (普通のものをマニフェストに入れておくことを忘れないでください)。
ここでは、私は輸入品を使用していないレシーバーです。これはかなり簡単です。ホームスクリーン上にあるすべてのウィジェットをつかむ更新ルーチンは、ウィジェットプロバイダの静的関数です。ウィジェットの設定とウィジェットプロバイダの2つの場所から駆動されるため、クラスです。タイマは24時間ごとに再スケジュールされます。起動時にプロバイダの更新が再起動される(起きているのは、新しい日の計算が実行され、ウィジェットの表示が更新されていることだけです。)コードを落としてstartActivityを入れることができます。 PendingIntent.FLAG_UPDATE_CURRENTを指定すると、複数のインテントが誤ってスタックアップすることはありません。
public class DaysReceiver extends BroadcastReceiver {
static String TAG = "DaysReceiver";
@Override
public void onReceive(Context context, Intent intent) {
MyLog.d(TAG, "onReceive");
updateWidgets(context);
}
private void updateWidgets(Context context) {
MyLog.d(TAG, "updateWidgets");
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName componentName = new ComponentName(context, DaysProvider.class);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(componentName);
final int N = appWidgetIds.length;
if (N < 1) {
MyLog.d(TAG, "No widgets");
return;
}
for (int i = 0; i < N; i++) {
MyLog.d(TAG, "Update widget " + Integer.toString(appWidgetIds[i]));
DaysProvider.updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
}
}
}
希望は私はあまりにrambledていないが、私は戻っていくつかの他のビジネスに取得するために急いでね。私は実際に投稿を編集する時間がありません。これが助けてくれることを願って...
ありがとうthats正確に何を探しています。この周辺のどこかの例を知っていますか?アラームチュートリアルの例も示しています。 – yoshi24