報警:
你可以安排一個懸而未決的意圖驅動你想要的火警時。處理過程如下:
確定您希望觸發報警的頻率。您可以在確切的時間,從現在開始的特定時間(10秒內)或特定的時間間隔(每x秒/分鐘/等)重複播放。您還可以設置一個特定的時間來啓動重複過程。間隔不可變。然後你必須做一個鏡頭,並在下一次設置另一個警報。您還可以設置確定時間格式的標誌(millis,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分鐘。該例程可用於取消未完成的警報。
接收器只是一個普通的廣播接收器,你可以做任何事情,你可以在任何其他廣播接收器中做。 (不要忘了把通常的東西放在清單中,權限等等。
這裏是我使用的接收器減去進口,它非常簡單直接,抓取主屏幕上的所有小部件並更新它們更新例程是一個靜態函數,它是一個類,因爲它是從兩個地方驅動的,widget配置和widget提供者,計時器每24小時重新安排一次,警報不會通過一個引導,但提供者的更新是在重新啓動時驅動的(所有這些都是新的一天計算被執行,並且更新了部件顯示。)您可以放棄我的代碼並放入startActivity。 Ooops。幾乎忘記了。 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]);
}
}
}
希望我沒有天馬行空得多,但我急着回去做其他生意。我沒有時間真正編輯帖子。希望這有助於...
感謝那正是我正在尋找。你知道這裏的任何例子嗎?也是一個報警教程的例子。 – yoshi24