如何使用RTC唤醒和报警意图

时间:2014-11-10 12:13:06

标签: java android alarm android-alarms

我正在开展一个项目,我的目标是配置一部手机。我必须将手机的声音与日历相关联。

用户可以选择日期,开始时间和结束时间以及声音的配置参数。 例如,每个星期一,应用程序必须在上午8点到下午4点之间将手机置于静音模式

我已经拥有了所有参数,我现在要做的就是应用它们。为此,我认为使用RTC Wake Up是最好的。

以下是我正在处理的代码

TimePicker hourBeginning = (TimePicker)findViewById(R.id.hourBeginningTimePicker);
TimePicker hourEnding = (TimePicker)findViewById(R.id.hourEndingTimePicker);
SeekBar volumePhone = (SeekBar)findViewById(R.id.volumePhoneOptionSeekBar);
SeekBar volumeAlarm = (SeekBar)findViewById(R.id.volumeAlarmOptionSeekBar);
SeekBar volumeApplication = (SeekBar)findViewById(R.id.volumeApplicationOptionSeekBar);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, heureBeginning.getCurrentHour());
calendar.set(Calendar.MINUTE, heureEnding.getCurrentMinute());


// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                AlarmManager.INTERVAL_DAY, alarmIntent);

我不明白这是如何运作的,如何解决我的问题

// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                AlarmManager.INTERVAL_DAY, alarmIntent);

如果你认为,有一个更好的解决方案,或者知道如何正确使用RTC Wake Up来解决我的问题,我们将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

使用警报管理器在特定的定义时间触发警报。

AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(getApplicationContext(),
            xyz.class);

    PendingIntent alarmIntent = PendingIntent
            .getService(getApplicationContext(), 0, intent,
                    PendingIntent.FLAG_ONE_SHOT);

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 14);
    calendar.set(Calendar.MINUTE, 00);
    calendar.set(Calendar.SECOND, 00);

    alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), 1000 * 60 * 60 * 24, alarmIntent);