AlarmManager不接受timepicker的时间

时间:2015-04-15 07:22:47

标签: android alarmmanager android-pendingintent timepicker

我正在制作一个应用程序,如果我提供一个固定的时间,我的警报管理器会解雇,但如果我从时间戳中抽出时间,它就无法正常工作。

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代码。

我想我明白了,请回复 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您正在使用2个不同的Calendar部分:HOURHOUR_OF_DAY

   int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
   ...
   mcurrentTime.set(Calendar.HOUR,selectedHour);

您可以尝试使用Calendar.HOUR_OF_DAY设置小时。

注意:要检查您是否使用了正确的时间,请尝试将l转换为人类可读的时间并进行记录。