2016-03-02 48 views
0

我有一個應用程序從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(); 
} 

回答

2

試試這個,看看它是否適合你

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

0
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 –