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) 
+0

如果我想触发一个从时间选择器在特定时间报警?像“09:30 AM”? – Renboy

+0

是否在这个时候重复每天或一次触发? – Inducesmile

+0

它可以是... – Renboy

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

使用毫秒。

+0

它的工作原理,但它是在设置后直接接收的..就像我现在设置闹钟2分钟。设置后,它会在所需时间之前立即结束。这是行:alarmManager.set(AlarmManager.RTC_WAKEUP,毫秒,pendingIntent); – Renboy

+0

@Renboy是的,它是你的时间来发出警报,阅读Android AlarmManager如何工作:http://developer.android.com/intl/ru/reference/android/app/AlarmManager.html –