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作为问题声明。 –