在Android(C#)中启动AlarmManager [英] Starting AlarmManager in Android (C#)

查看:57
本文介绍了在Android(C#)中启动AlarmManager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看到并使用了以下链接:创建并在Android中使用AlarmManager调度警报



现在我有了以下代码:

 名称空间AlarmManage 
{
公共类MyBroadcastReceiver:BroadcastReceiver
{
公共重写void OnReceive(上下文上下文,意图)
{
Toast.MakeText(上下文,时间到了……现在振动了!,
ToastLength.Long).Show();
Vibrator振动器=(Vibrator)上下文
.GetSystemService(Context.VibratorService);
振动器。Vibrate(2000);
}
}
}

public void startAlertAtParticularTime()
{
//警报首先在14小时40分钟振动并重复本身以ONE_HOUR间隔
intent = new Intent(this,typeof(MyBroadcastReceiver));
endingIntent = PendingIntent.GetBroadcast(
this,280192,intent,PendingIntentFlags.CancelCurrent);
Java.Util.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,endingIntent);
Toast.MakeText(this,警报将在指定的时间振动,ToastLength.Long).Show();
}

我还在清单中设置了 SET-ALARM和 VIBRATE。 / p>

我的问题:我看不到输出 Time Up ... Now Vibrating!

解决方案

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

  [BroadcastReceiver(Enabled = true)] 

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

 < receiver android: name = MyBroadcastReceiver /> 

因此, MyBroadcastReceiver 应如下所示:

  [BroadcastReceiver(Enabled = true)] 
公共类MyBroadcastReceiver:BroadcastReceiver
{
公共替代无效OnReceive(上下文上下文,意图)
{
Toast.MakeText(上下文,时间到了……现在振动了!,
ToastLength.Long).Show();
Vibrator振动器=(Vibrator)上下文
.GetSystemService(Context.VibratorService);
振动器。Vibrate(2000);
}
}

现在您可以敬酒:时间到了。 ..现在振动了!!!


I saw and used this link: Creating And Scheduling Alarms Using AlarmManager In Android

Now I have this code:

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();
}

I also set "SET-ALARM" and "VIBRATE" in Manifest.

My problem: I do not see the output "Time Up... Now Vibrating !!!

解决方案

I think the problem is that you didn't successfully declare your MyBroadcastReceiver, in xamarin, we can use:

[BroadcastReceiver(Enabled = true)] 

to declare this broadcast. It's like declare it in traditional android manifest like this:

<receiver android:name="MyBroadcastReceiver" /> 

So, MyBroadcastReceiver should be like this:

[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);
    }
}

Now you can get the toast: "Time Up... Now Vibrating !!!"

这篇关于在Android(C#)中启动AlarmManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆