Android:想要添加一些额外的小时和分钟来设置闹钟

时间:2014-05-05 06:39:49

标签: android alarmmanager android-alarms android-timepicker

我想从所选的时间中添加一些额外的小时和分钟,例如,如果我在晚上11点30分被选中,那么将添加额外的5.30,因此警报将设置为4.30。

我们怎么做?

以下是一些可供参考的代码: -

public class AndroidTimeActivity extends Activity {

     TimePicker myTimePicker;
     Button buttonstartSetDialog;
     Button buttonCancelAlarm;
     TextView textAlarmPrompt;

     TimePickerDialog timePickerDialog;

     final static int RQS_1 = 1;

     public static final long HOUR = 3600*1000; 

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            textAlarmPrompt = (TextView)findViewById(R.id.alarmprompt);

            buttonstartSetDialog = (Button)findViewById(R.id.startSetDialog);
            buttonstartSetDialog.setOnClickListener(new OnClickListener(){

       @Override
       public void onClick(View v) {
        textAlarmPrompt.setText("");
        openTimePickerDialog(false);

       }});

            buttonCancelAlarm = (Button)findViewById(R.id.cancel);
            buttonCancelAlarm.setOnClickListener(new OnClickListener(){

       @Override
       public void onClick(View arg0) {
        cancelAlarm();
       }});

        }

     private void openTimePickerDialog(boolean is24r){
      Calendar calendar = Calendar.getInstance();

      timePickerDialog = new TimePickerDialog(
        AndroidTimeActivity.this, 
        onTimeSetListener, 
        calendar.get(Calendar.HOUR_OF_DAY), 
        calendar.get(Calendar.MINUTE), 
        is24r);
      timePickerDialog.setTitle("Set Alarm Time");  

      timePickerDialog.show();

     }

        OnTimeSetListener onTimeSetListener
        = new OnTimeSetListener(){

      @Override
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

       Calendar calNow = Calendar.getInstance();
       Calendar calSet = (Calendar) calNow.clone();

       calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
       calSet.set(Calendar.MINUTE, minute);
       calSet.set(Calendar.SECOND, 0);
       calSet.set(Calendar.MILLISECOND, 0);

       if(calSet.compareTo(calNow) <= 0){
        //Today Set time passed, count to tomorrow
        calSet.add(Calendar.DATE, 1);
       }

       setAlarm(calSet);
      }};

     private void setAlarm(Calendar targetCal){

      textAlarmPrompt.setText(
        "\n\n***\n"
        + "Alarm is set@ " + targetCal.getTime() + "\n"
        + "***\n");

       System.out.println("Time is minutes:"+targetCal.getTime());

       //DateFormat newDate = new DateFormat(targetCal.getTime() + 2 * HOUR);

      Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
      PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
      AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
      alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);

     }

     private void cancelAlarm(){

      textAlarmPrompt.setText(
        "\n\n***\n"
        + "Alarm Cancelled! \n"
        + "***\n");

      Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
      PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
      AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
      alarmManager.cancel(pendingIntent);

     }
      }

1 个答案:

答案 0 :(得分:2)

在您要设置闹钟时间时增加值。

       calSet.set(Calendar.HOUR_OF_DAY, hourOfDay + <increasedHours>);
       calSet.set(Calendar.MINUTE, minute + <increasedMinutes>);
       calSet.set(Calendar.SECOND, 0);
       calSet.set(Calendar.MILLISECOND, 0);

现在将其显示给用户:

private void setAlarm(Calendar targetCal){
     if(targetCal.get(Calendar.HOUR) > 12) 
          hours = targetCal.get(Calendar.HOUR) -12;
     else
          hours = targetCal.get(Calendar.HOUR);

    textAlarmPrompt.setText(
        "\n\n***\n"
        + "Alarm is set@ " + hours +  " : " + targetCal.get(Calendar.MINUTE)+ "\n"
        + "***\n");

    // rest of your logic
     }