安卓:报警是打好每30分钟,从12:30开始(Android: Alarm to be play e

2019-06-23 10:15发布

在这里,我要使用报警服务在每30分钟打报警。 现在,我已经将它设置在离每一个每10二次启动播放。

这里是代码:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings_layout);


    Intent myIntent = new Intent(SettingsActivity.this, MyAlarmService.class);
    pendingIntent = PendingIntent.getService(SettingsActivity.this, 0, myIntent, 0);

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

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

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10*1000, pendingIntent);

}

现在的问题是,我要开始从12:30不是从应用程序时开始报警,并应在埃弗特30分钟反复播放。 像1:00,1:30,2:00。 。 。 等等

所以我改变有什么在我的代码呢?

Answer 1:

要开始在特定时间的服务。 看到这个帖子也许有所帮助:

使用Alarmmanager开始在特定时间的服务



Answer 2:

使用设置你的初始报警时间为12:30 设置方法 。

当火警,然后设置一个报警时间,继续做直到你不想报警了。

你并不需要一个服务做这样一个简单的任务。 AlarmManager比能够处理这个多。



Answer 3:

试试吧

并使用第一次 -

尝试另一个



Answer 4:

一个天真的做法是:

  1. 开始,将始终运行,如上下文线程的服务 。
  2. 计算出你想在未来使用警报响时的时间戳日期 ,并把它放在“长alertTimestamp”。
  3. 在一个循环中,现在计算时间戳使用日期 ,并把它放在“长nowTimestamp”。
  4. 如果nowTimestamp <alertTimestamp,把线程睡觉了(alertTimestamp - nowTimestamp)。
  5. 否则声音警报,并重新计算alertTimestamp,重复。

请确保你赶上通知中断胎面优雅,这是关键,以中止计时器。

希望这是有益的。



Answer 5:

对于每30分钟重复你将需要添加到您的代码:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*30, pendingIntent); //millisecs*seconds*minutes

但我还没有想出如何在特定时间开始呢。



文章来源: Android: Alarm to be play every 30 minutes and it start from 12:30