我正尝试每天在晚上7点播放一个铃声,但是在其未决 Intent 注册广播后,它会立即播放铃声。

我通过单击按钮在前台调用了服务,并在onStartCommand中创建了挂起的 Intent :

@Override
public int onStartCommand(Intent intent, int flags, int startId)
{

    startForeground(FOREGROUND_ID,
            buildForegroundNotification("DummyApp"));

    c = Calendar.getInstance();
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    int interval = 1000 * 60 * 60*24;
    c.setTimeInMillis(System.currentTimeMillis());
    c.set(Calendar.HOUR, 19);
    c.set(Calendar.MINUTE,00);
    manager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(),
            interval, pendingIntent);
    Intent alarmIntent = new Intent(AlarmService.this, DataProcessor.class);
    pendingIntent = PendingIntent.getBroadcast(AlarmService.this, 0,
            alarmIntent, 0);
    return START_STICKY;
}

现在,我正在通过DataProcessor类的on接收方法在DataProcessor类中接收此广播时播放铃声:
@Override
public void onReceive(Context ctx,Intent intent) {


    playRIng(ctx);

 }

但是,当我运行此代码时,单击按钮,创建服务,但在调用AlarmService并播放铃声后立即触发警报。这是怎么可能的,因为我在注册广播时给出了确切的7时时钟。
Google搜索了很多,但只找到了相同的代码,没别的了。每个代码都可以按时播放铃声,但在广播注册后也可以立即播放铃声。

最佳答案

您可以在开发人员网站上尝试该示例,以了解此处提供的示例代码。代码中可能存在一些编程错误,但是此处提供的示例代码确实可以正常工作。

Scheduling Repeating Alarms

关于android - 警报创建后立即运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29703113/

10-13 01:49