报警:
你可以安排一个悬而未决的意图驱动你想要的火警时。处理过程如下:
确定您希望触发报警的频率。您可以在确切的时间,从现在开始的特定时间(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