我怎样才能通过未来的时间来唤醒未来的意图?

时间:2015-01-07 10:57:22

标签: java android broadcastreceiver android-pendingintent

我是android的新手,我需要通过广播接收器设置事件通知。

现在我正在通过硬编码的时间来获取通知它正常工作......我怎样才能通过未来的某些时间来获取当时的通知......

Tried Code:

   EditText text = (EditText) findViewById(R.id.editText1);
       int time = Integer.parseInt(text.getText().toString());
       Intent intent = new Intent(this, MyReceiver.class);
       PendingIntent pend_intent = PendingIntent.getBroadcast(
                   this.getApplicationContext(), 0, intent, 0);
//calls the alarm
        AlarmManager alarmManager = (AlarmManager) getSystemService(
                               ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
          + (time * 10000), pend_intent);

2 个答案:

答案 0 :(得分:2)

使用Calendar.getInstance()设置AlarmManager的未来时间。例如:

准备一个Calendar实例,以便将来设置Aalarm:

public  Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, hour);
    cal.set(Calendar.MINUTE, minutes);
    cal.set(Calendar.DAY_OF_MONTH, day);
    cal.set(Calendar.MONTH, month) - 1);
    cal.set(Calendar.YEAR, year);

现在将cal.getTimeInMillis()作为第二个参数而不是System.currentTimeMillis()+ (time * 10000)中的alarmManager.set

答案 1 :(得分:1)

使用Calancer以毫秒计算时间。

例如

Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(System.currentTimeMillis());

现在进入警报管理器设置方法,使用这样的设置方法。

mAlarmManager.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis()
            + mTime * 10000, mPendingIntent);

希望它有所帮助 干杯 -Aman