Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用RTC唤醒和报警意图_Java_Android_Alarm_Android Alarms - Fatal编程技术网

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

Java 如何使用RTC唤醒和报警意图,java,android,alarm,android-alarms,Java,Android,Alarm,Android Alarms,我正在做一个项目,我的目标是配置一部手机。我必须将电话的声音与日历关联起来 用户可以选择日期、开始时间和结束时间以及声音的配置参数例如,每周一,应用程序必须在上午8点到下午4点之间将手机置于静音模式 我已经有了所有的参数,我现在要做的就是应用它们。为此,我认为使用RTC Wake-Up是最好的 下面是我正在编写的代码: TimePicker hourBeginning = (TimePicker)findViewById(R.id.hourBeginningTimePicker); TimePi

我正在做一个项目,我的目标是配置一部手机。我必须将电话的声音与日历关联起来

用户可以选择日期、开始时间和结束时间以及声音的配置参数例如,每周一,应用程序必须在上午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);
我不明白这是怎么回事,也不明白它是如何解决我的问题的:

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
来解决我的问题,我们将不胜感激


谢谢。

使用报警管理器在指定的时间触发报警

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);

是的,这是可行的,当然你需要创建一个新的类