当前位置: 首页 > 知识库问答 >
问题:

Xamarin Android警报管理器问题

姜泰宁
2023-03-14
[BroadcastReceiver]
    public class AlarmReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            Log.Info("AlarmReceiver", "Triggered");
        }

        public static void Start(Context context, long triggerAfterMilis)
        {
            var type = AlarmType.RtcWakeup;
            var alarmManager = (AlarmManager) context.GetSystemService(Context.AlarmService);

            var timerIntent = PendingIntent.GetBroadcast(context, 0, new Intent(context, typeof(AlarmReceiver)), PendingIntentFlags.CancelCurrent);

            alarmManager.Cancel(timerIntent);
            if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
                alarmManager.SetAndAllowWhileIdle(type, triggerAfterMilis, timerIntent);
            else if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
                alarmManager.SetExact(type, triggerAfterMilis, timerIntent);
            else
                alarmManager.Set(type, triggerAfterMilis, timerIntent);
            Log.Info("AlarmReceiver", $"Started, tigger after {triggerAfterMilis} miliseconds.");
        }
    }
AlarmReceiver.Start(Activity,(long)TimeSpan.FromMinutes(10).TotalMilliseconds)

共有1个答案

壤驷心思
2023-03-14

您正在设置时间触发警报过去仅使用10分钟的时间跨度,毫秒数需要从一年1970年开始计算。

如果所述触发时间在过去,则立即触发警报。

获取当前时间,并将时间添加到当前时间中。

var TenMinsFromNow = Calendar.GetInstance(Android.Icu.Util.TimeZone.Default).TimeInMillis + TimeSpan.FromMinutes(10).TotalMilliseconds);
 Java.Lang.JavaSystem.CurrentTimeMillis();
 Calendar.GetInstance(Android.Icu.Util.TimeZone.Default).TimeInMillis;
 类似资料:
  • 嗨,我目前正在使用警报管理器。我写了下面给出的代码。根据代码,警报管理器应该在10秒后触发,但在我的代码中,警报管理器会立即触发。请帮助。 还有我的警报接收课 我已经在清单中添加了所需的权限。

  • 问题内容: 如何实现android 警报管理器? 问题答案: 从服务设置警报: 如果要设置在电话启动时重复发出警报: 向添加权限和服务: 并创建一个新类:

  • 问题内容: 我想创建带有通知消息的广播AlarmManager(重复)。我从Pickers中传递日历对象。如果我不重启设备,它将正常工作。但是,当我重新启动设备时,您知道我的calander对象将为null。重新启动后如何管理重复警报以及如何保留日历时间表?感谢您的想法。 问题答案: 您需要使用并将其设置为响应消息。例如 在清单中注册您的 在代码中处理消息 MyBootReceiver.java

  • 问题内容: 嗨,我正在开发警报应用程序,因为我需要在用户选择的不同日期的同一时间重复调用警报。 我meen如果我设置报警时间8PM和重复选项sunday,tuesday闹钟会在每个被调用sunday,tuesday。 任何帮助,将不胜感激。 问题答案: 为此使用广播接收器和Sqlite数据库。

  • 我想在多个特定的日期和时间上创建通知,这些日期和时间存储在数据库中。我可以在正确的日期和时间得到通知,但我后来注意到,我也在第二天随机得到通知。每当我重新启动模拟器时,它们就会出现。 所以,似乎我不能停止报警管理器或广播接收器。我曾尝试向AlarmManager的cancel方法提供pendingIntent,但没有成功。我也使用切换按钮来启用/禁用通知,但没有效果 下面是我的代码。 这是数据库结