Articles of alarmmanager

将意图额外传递给android广播接收器

我创建了一个AlarmReceiver类,用作警报的广播接收器。 问题是我需要从将类警报设置到广播接收器类的类中发送一些值。 setAlarmManager.java Intent i = new Intent(mContext, AlarmReceiver.class); i.putExtra(KEY_ROWID, (long)taskId); PendingIntent pi = PendingIntent.getBroadcast(mContext,taskId_int,i,PendingIntent.FLAG_ONE_SHOT); mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi); 我需要在alarmreceiver类中从intent获取KEY_ROWID。 我怎样才能做到这一点? AlarmReceiver类如下所示。 public class AlarmReceiver extends BroadcastReceiver { public static final String ALARM_ALERT_ACTION =”com.android.alarmclock.ALARM_ALERT”; public static final String ALARM_INTENT_EXTRA = “intent.extra.alarm”; @Override public void onReceive(Context context, Intent intent) { //Here I need the values from intent […]

Android – 如何将通知设置为将来的特定日期?

编辑:已解决! 曾经想要从某个特定日期开始设置通知(当某个活动开始时或按下按钮时?)阅读更多内容以了解如何: //Set a notification in 7 days Calendar sevendayalarm = Calendar.getInstance(); sevendayalarm.add(Calendar.DATE, 7); Intent intent = new Intent(this, Receiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 001, intent, 0); AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, sevendayalarm.getTimeInMillis(), pendingIntent); 这是Receiver类的代码 public class Receiver extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { […]

当手机不使用时,AlarmManager重复警报随机丢失

我以30分钟的间隔调用后台Service来读取当前位置的纬度/经度并通过POST API将其发送到服务器。 我使用setRepeating()类的setRepeating()方法每30分钟安排一次警报。 但有时警报会被遗漏而服务没有被调用。 为了监控是否每30分钟调用一次警报,我在SD卡中生成了Log.txt文件。 对于每次报警当前时间的报警都将写入Log.txt文件中。 但是在比较了4到5个设备的Log.txt文件后,我注意到对于某些设备,警报没有调用UserTrackingReceiver.java (后台服务)的onCreate()方法。 下面提到的完整代码块。 当app启动registerUserTrackingReceiver()方法时,调用如下: public static void registerUserTrackingReceiver(Context context) { try { Intent intent = new Intent(context, UserTrackingReceiver.class); boolean alarmUp = (PendingIntent.getService(context, 1001, intent, PendingIntent.FLAG_NO_CREATE) == null); if (alarmUp) { Calendar calendar = Calendar.getInstance(); if (calendar.get(Calendar.MINUTE) > 0 && calendar.get(Calendar.MINUTE) 30) { if (calendar.get(Calendar.HOUR_OF_DAY) == 23) { calendar.set(Calendar.HOUR_OF_DAY, 0); […]

当我两次发出警报时会发生什么?

为了避免两次发出警报,我正在跳槽(好吧,并不是那么复杂)。 基本代码如下: AlarmManager mgr=(AlarmManager)getSystemService(Context.ALARM_SERVICE); Intent i=new Intent(this, MyService.class); PendingIntent pi=PendingIntent.getService(this, 0, i, 0); mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi); 每次我的应用程序启动时,我是否真的会运行此代码是否重要? 我称之为大约10次作为过度杀伤实验,我没有看到任何不良影响,但我找不到任何关于这是否是巧合或预期行为的参考。 如果不是特别期待的话,感觉“错了”。 如果AlarmManager的行为发生变化,可能会让我后来遇到麻烦。

我可以在Android上使用带有LocalBroadcastManager的AlarmManager吗?

我有这个代码: private AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); private PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, new Intent(“my action-name”), 0); alarmManager.setInexactRepeating((int)AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + autoUpdateIntervalInMinutes * 60 * 1000, autoUpdateIntervalInMinutes * 60 * 1000, alarmIntent); 但是我想为LocalBroadcastManager更改它。 这可能吗?

在android中设置重复几天的星期警报

有人可以为设定的重复周日警报提供良好的逻辑吗? 我通过使用每周做一次警报 alarmCalendar.set(Calendar.HOUR, AlarmHrsInInt); alarmCalendar.set(Calendar.MINUTE, AlarmMinsInInt); alarmCalendar.set(Calendar.SECOND, 0); alarmCalendar.set(Calendar.AM_PM, amorpm); Long alarmTime = alarmCalendar.getTimeInMillis(); Intent intent = new Intent(Alarm.this, AlarmReciever.class); intent.putExtra(“keyValue”, key); PendingIntent pi = PendingIntent.getBroadcast(Alarm.this, key, intent, PendingIntent.FLAG_UPDATE_CURRENT); am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, 7*1440*60000 , pi); 警报触发按时触发,7天后会自动触发。 但我的要求是我想选择几天而不是仅仅七天。 类似于每周一,周二,周四上午9:00 – 警报应自动触发。 我如何在setRepeating中执行此操作。 有人可以帮我解决这个问题吗? 谢谢!

无法检查AlarmManager是否设置了警报

我正在检查AlarmManager是否已使用此答案设置了警报。 以下是我的代码段。 boolean alarmUp = (PendingIntent.getBroadcast(MainActivity.this, 0, new Intent(MainActivity.this, AlarmReceiver.class), PendingIntent.FLAG_NO_CREATE) != null); if (alarmUp) { // alarm is set; do some stuff } Intent alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class); final PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10 * 1000, pendingIntent); 但是, alarmUp始终设置为true。 也就是说,无论我是否设置闹钟,每当我重新启动我的应用时,它都会告诉我alarmUp是真的(我正在通过制作Toast检查它)。 请帮助我出错的地方。

Android AlarmManager:有没有办法取消所有闹钟集?

我正在构建一个应用程序,为一周中的每一天(在某个小时和分钟)设置2个警报,警报会一周又一周地重复。 现在重点是:如果用户更改了警报,我将需要取消之前设置的警报。 有没有办法简单地取消我的应用程序设置的所有警报?

警报管理器立即触发

嗨,我目前正在使用AlarmManager。 我写了下面给出的代码。 根据代码,应在10秒后触发AlarmManager,但在我的代码中,警报管理器会立即触发。 请帮忙。 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP; long timeOrLengthofWait = 10000; Intent intentToFire = new Intent(this, AlarmReciever.class); PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intentToFire, 0); alarmManager.set(alarmType, timeOrLengthofWait, alarmIntent); } } 和我的AlarmReciever类 public class AlarmReciever extends BroadcastReceiver { […]

android:使用AlarmManager运行后台任务

我正在编写一个应用程序,需要定期检查服务器是否有新消息并通知用户。 我已经看到一些使用AlarmManager来点击BroadcastReciever的例子,这似乎是正确的事情,但我似乎无法让它工作。 任何人都可以向我展示这种事情的一步一步的教程(重复警报触发某种启动通知的背景代码)? TIA