我正在制作一个应用程序,如果我提供一个固定的时间,我的警报管理器会解雇,但如果我从时间戳中抽出时间,它就无法正常工作。
TimePicker: -
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
final Calendar 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);
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);
alarmManager.set(AlarmManager.RTC,l , pendingIntent);
如果我这样做的话就可以了:
alarmManager.set(AlarmManager.RTC,System.CurrentTimeInMillis()+8000 , pendingIntent);
但如果我这样做则不是: -
alarmManager.set(AlarmManager.RTC,l , pendingIntent);
其中l来自上面的timepicker代码。
我想我明白了,请回复 提前谢谢。
答案 0 :(得分:0)
您正在使用2个不同的Calendar
部分:HOUR
和HOUR_OF_DAY
:
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
...
mcurrentTime.set(Calendar.HOUR,selectedHour);
您可以尝试使用Calendar.HOUR_OF_DAY
设置小时。
注意:要检查您是否使用了正确的时间,请尝试将l
转换为人类可读的时间并进行记录。