Android如何根据我在sqlite数据库中设置的时间设置闹钟?
我有一个应用程序从Web服务接收数据称为任务,任务然后保存到我的SQLite数据库。我接下来要做的是查询这些任务,然后根据设置为触发的时间设置一个警报。比方说,我有一个任务名称“feed”,任务的触发时间是'09:00 AM'(我使用'h:i'格式)。我怎样才能把这个时间格式转换成可以被alarmManager读取的东西?Android如何根据我在sqlite数据库中设置的时间设置闹钟?
public void setAlarm(int uniqueid, int duration) {
Intent intent = new Intent(this, AlarmReceiver.class);
intent.setAction(AlarmReceiver.ACTION_ALARM_RECEIVER);//my custom string action name
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uniqueid, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (duration * 1000), pendingIntent);
Toast.makeText(this, "Alarm set for " + uniqueid, Toast.LENGTH_LONG).show();
}
试试这个,看看它是否适合你
Date mDate = new Date();
Calendar mCalendar = Calendar.getInstance();
mCalendar.setTime(mDate);
mCalendar.add(Calendar.MINUTE, 2);
long alarmInTwoMinutes = mCalendar.getTimeInMillis();
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmInTwoMinutes, pendingIntent);
更新在特定的时间
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 30);
long alarmInTwoMinutes = calendar.getTimeInMillis();
对于重复设置,您可以使用
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmInTwoMinutes, pendingIntent)
String date_string = "09:00 AM";
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
try {
Date date = sdf.parse(date_string);
long milliseconds = date.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
使用毫秒。
它的工作原理,但它是在设置后直接接收的..就像我现在设置闹钟2分钟。设置后,它会在所需时间之前立即结束。这是行:alarmManager.set(AlarmManager.RTC_WAKEUP,毫秒,pendingIntent); – Renboy
@Renboy是的,它是你的时间来发出警报,阅读Android AlarmManager如何工作:http://developer.android.com/intl/ru/reference/android/app/AlarmManager.html –
如果我想触发一个从时间选择器在特定时间报警?像“09:30 AM”? – Renboy
是否在这个时候重复每天或一次触发? – Inducesmile
它可以是... – Renboy