在 Android 中启动 AlarmManager (C#)

Starting AlarmManager in Android (C#)

我看到并使用了这个 link:Creating And Scheduling Alarms Using AlarmManager In Android

现在我有了这个代码:

namespace AlarmManage
{
    public class MyBroadcastReceiver : BroadcastReceiver 
    {
        public override void OnReceive(Context context, Intent intent)
        {
            Toast.MakeText(context, "Time Up... Now Vibrating !!!",
                    ToastLength.Long).Show();
            Vibrator vibrator = (Vibrator)context
                    .GetSystemService(Context.VibratorService);
            vibrator.Vibrate(2000);
        }  
    }
}

public void startAlertAtParticularTime()
{
    // alarm first vibrate at 14 hrs and 40 min and repeat itself at ONE_HOUR interval  
    intent = new Intent(this, typeof(MyBroadcastReceiver));
    pendingIntent = PendingIntent.GetBroadcast(
            this, 280192, intent, PendingIntentFlags.CancelCurrent);
    Java.Util.Calendar calendar = Java.Util.Calendar.Instance;
    calendar.TimeInMillis = Java.Lang.JavaSystem.CurrentTimeMillis();
    calendar.Set(Java.Util.CalendarField.HourOfDay, 14);
    calendar.Set(Java.Util.CalendarField.Minute, 49);
    alarmManager = (AlarmManager)GetSystemService(AlarmService);
    alarmManager.SetRepeating(AlarmType.RtcWakeup, calendar.TimeInMillis,
            AlarmManager.IntervalHour, pendingIntent);
    Toast.MakeText(this, "Alarm will vibrate at time specified", ToastLength.Long).Show();
}

我还在清单中设置了 "SET-ALARM" 和 "VIBRATE"。

我的问题:我没有看到输出“Time Up... Now Vibrating !!!

我认为问题是你没有成功声明你的 MyBroadcastReceiver,在 xamarin 中,我们可以使用:

[BroadcastReceiver(Enabled = true)] 

声明此广播。这就像在传统的 android 清单中这样声明它:

<receiver android:name="MyBroadcastReceiver" /> 

所以,MyBroadcastReceiver应该是这样的:

[BroadcastReceiver(Enabled = true)]
public class MyBroadcastReceiver : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {
        Toast.MakeText(context, "Time Up... Now Vibrating !!!",
                ToastLength.Long).Show();
        Vibrator vibrator = (Vibrator)context
                .GetSystemService(Context.VibratorService);
        vibrator.Vibrate(2000);
    }
}

现在你可以干杯了:"Time Up... Now Vibrating !!!"