从的OnDestroy或日历的onPause
获取数据我有这样的代码:从的OnDestroy或日历的onPause
namespace TestB
{
[Activity(Label = "TestB", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
Java.Util.Calendar calendar;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button button = FindViewById<Button>(Resource.Id.MyButton);
try
{
calendar = Java.Util.Calendar.Instance;
calendar.TimeInMillis = Java.Lang.JavaSystem.CurrentTimeMillis();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message.ToString(), ToastLength.Short).Show();
}
}
protected override void OnDestroy()
{
base.OnDestroy();
if (calendar.Get(Java.Util.CalendarField.HourOfDay) == 13 && calendar.Get(Java.Util.CalendarField.Minute) == 33)
Toast.MakeText(this, calendar.Get(Java.Util.CalendarField.HourOfDay).ToString() + " " + calendar.Get(Java.Util.CalendarField.Minute).ToString(), ToastLength.Short).Show();
}
protected override void OnPause()
{
base.OnPause();
if (calendar.Get(Java.Util.CalendarField.HourOfDay) == 13 && calendar.Get(Java.Util.CalendarField.Minute) == 33)
Toast.MakeText(this, calendar.Get(Java.Util.CalendarField.HourOfDay).ToString() + " " + calendar.Get(Java.Util.CalendarField.Minute).ToString(), ToastLength.Short).Show();
}
当时间来到13和33分钟,该消息将不会发行。 我想以这种方式拨打alarmManager
。 我想有calendar.Set(Java.Util.CalendarField.HourOfDay, 13)
和calendar.Set(Java.Util.CalendarField.Minute, 33)
,并以这种方式致电alarmManager
。
编辑1:
我编辑的代码:
System.Timers.Timer t;
if (t == null)
{
t = new System.Timers.Timer();
//t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
//t.Elapsed += (sender, args) => FireTheMissiles();
t.Elapsed += new System.Timers.ElapsedEventHandler(OnTimeEvent);
t.Interval = 1000;
t.Enabled = true;
}
t.Start();
protected override void OnStop()
{
base.OnStop();
flag = 3;
}
private void OnTimeEvent(object source, ElapsedEventArgs e)
{
h = DateTime.Now.Hour;
m = DateTime.Now.Minute;
RunOnUiThread(delegate
{
if (flag == 3)
{
if (calendar.Get(Java.Util.CalendarField.HourOfDay) == h && calendar.Get(Java.Util.CalendarField.Minute) == m)
Toast.MakeText(this, "3 " + calendar.Get(Java.Util.CalendarField.HourOfDay).ToString() + " " + calendar.Get(Java.Util.CalendarField.Minute).ToString(), ToastLength.Short).Show();
}
});
}
我问朋友来实现另一个应用程序这个项目,看看如果应用程序没有开24小时会出现一个消息,但任何消息都不会出现。
编辑2:
我用你的代码。
我也使用了定时器。
我在数据库中保存了安装时间和日期等信息。
我希望闹钟按时间和日期显示。
但经过多次尝试,我没有收到任何警报消息。
private void OnTimeEvent(object source, ElapsedEventArgs e)
{
RunOnUiThread(delegate
{
if (flag == 1)
{
}
int h = DateTime.Now.Hour;
int m = DateTime.Now.Minute;
DateTime today = DateTime.Today;
dc = today.AddDays(1).Day;
mc = today.AddDays(1).Month;
yc = today.AddDays(1).Year;
var data = mydb.Table<DatB>();
var data1 = data.Where(x => x.DWSeen == dc).Where(x => x.MWSeen == mc).FirstOrDefault();
if (flag == 3 && data1 != null && data1.RFSeen == 0)
{
startAlertAtParticularTime(data1.HourSeen, data1.MinuteSeen, "-1");
if (calendar.Get(Java.Util.CalendarField.HourOfDay) == h && calendar.Get(Java.Util.CalendarField.Minute) == m && calendar.Get(Java.Util.CalendarField.DayOfMonth) == dc && calendar.Get(Java.Util.CalendarField.Month) == mc && calendar.Get(Java.Util.CalendarField.Year) == yc && data1.RFSeen == 0)
{
startAlertAtParticularTime(data1.HourSeen, data1.MinuteSeen, data1.RFSeen.ToString());
}
}
});
}
“-1”表示该报警不会出现
“0”表示报警将出现
是的,我希望应用程序在同时特定的时间提醒已关闭
首先,您需要创建一个BroadcastReceiver
来处理来自系统的警报通知。然后你可以使用AlarmManager
设置闹钟在OnPause
或OnDestroy
:
Intent myintent = new Intent(this, typeof(AlarmReceiver));
var pendingintent = PendingIntent.GetBroadcast(this, 0, myintent, PendingIntentFlags.UpdateCurrent);
Java.Util.Date date = new Java.Util.Date();
Java.Util.Calendar cal = Java.Util.Calendar.Instance;
calendar.TimeInMillis = Java.Lang.JavaSystem.CurrentTimeMillis();
cal.Set(Java.Util.CalendarField.HourOfDay, 13);
cal.Set(Java.Util.CalendarField.Minute, 33);
cal.Set(Java.Util.CalendarField.Second, 0);
AlarmManager alarmManager = this.GetSystemService(AlarmService) as AlarmManager;
alarmManager.Set(AlarmType.RtcWakeup, cal.TimeInMillis, pendingintent);
对于BroadcastReceiver
部分,你可以参考Cheesebaron的答案在这种情况下:Xamarin AlarmManager Android。
你好。我做了编辑2。 – arz
不知道你想做什么,你想从你的应用程序设置一个闹钟时间13:33? –
是的,我希望应用程序在关闭的特定时间提醒您 – arz
您是否检查过我的答案,有没有更新? –