1

我有一個服務..我有產生它正在與System.currentTimeMillis()從時間選擇器所花費的時間..通知,但如果我走的時候從時間選擇器AlarmManager不與時間選擇器工作

這是我在TextView中的點擊顯示時間選擇器:

tv.setOnClickListener(new OnClickListener() { 
    @Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    mcurrentTime = Calendar.getInstance(); 
    int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); 
    int minute = mcurrentTime.get(Calendar.MINUTE); 
    TimePickerDialog mTimePicker; 
    mTimePicker = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { 
    @Override 
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
    timePicker.setIs24HourView(true); 
    //tv.setText(selectedHour + " : " + selectedMinute); 
    mcurrentTime.set(Calendar.HOUR,selectedHour); 
    mcurrentTime.set(Calendar.MINUTE,selectedMinute); 
    mcurrentTime.set(Calendar.SECOND,0); 
    // HERE I AM GETTING TIME FROM TIMEPICKER 
    l= mcurrentTime.getTimeInMillis(); 
    tv.setText(String.valueOf(l)); 
    } 
}, hour, minute, true);//Yes 24 hour tim 
    mTimePicker.setTitle("Select Time"); 
    mTimePicker.show(); 

    } 
}); 

這裏是點擊按鈕的代碼,在此單擊我開始服務:

Intent myIntent = new Intent(MainActivity.this, MyReceiver.class); 
int randomPIN = (int)(Math.random()*9000)+1000; 
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, randomPIN, myIntent,pendingIntent.FLAG_ONE_SHOT); 
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
//HERE I am entering the time from time picker 
alarmManager.set(AlarmManager.RTC, l , pendingIntent); 
+0

把一些日誌會有所幫助,如果你正在接收所選擇的時間或沒有。 – codevscolor

回答

2

替換此:

mcurrentTime.set(Calendar.HOUR, selectedHour); 

與此:

mcurrentTime.set(Calendar.HOUR_OF_DAY, selectedHour); 

Calendar.HOUR是嚴格進行12小時。

Documentation

場數get和set,指示上午或下午 的時刻。 HOUR用於12小時制時鐘(0 - 11)。中午和午夜 由0提高12例如爲代表,不,在10:04:15.250 PM的 HOUR爲10

+1

Thanksss dhaval ..救了我的命:) :) – Prakhar

1

嘗試setExact而不是set

有一個在set javadoc的一個段落:

注:API 19開始,傳遞給此方法觸發時間被視爲不精確:報警不會在此時間之前送達,但可能推遲並在一段時間後交付。操作系統將使用此策略,以便在整個系統中「批量」報警,從而最大限度地減少設備「醒來」並最大限度地減少電池使用的次數。一般來說,只要計劃在未來很長時間內報警,不久的將來計劃的報警將不會被延期。

+0

這並不能解釋爲什麼它在手動設置時間時沒有將TimePickerDialog作爲問題聲明。 –