警报管理器类问题。我正在设置闹钟但是当时没有触发

时间:2016-08-20 19:33:24

标签: android

我正在制作一个应用程序,可以在特定时间和特定时间的铃声模式下将手机静音。但是当我设置静音的时间时,它会在下一分钟触发,并且在静音模式触发之后触发振铃模式。这是代码。

     long sdl = calendar.getTimeInMillis();// here calendar has the time on which it should trigger
    mgrAlarm[number]= (AlarmManager) this.getSystemService(ALARM_SERVICE);
    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    intent.putExtra("Id",id);
    final int _id = (int) System.currentTimeMillis();
    PendingIntent appIntent = PendingIntent.getBroadcast(getBaseContext(), id,intent, PendingIntent.FLAG_CANCEL_CURRENT);
    mgrAlarm[number].set(AlarmManager.RTC_WAKEUP, sdl, appIntent);

1 个答案:

答案 0 :(得分:0)

是的!使用setExact(int, long, PendingIntent)方法代替set方法。

请关注android开发者文档:

  

注意:从API 19(KITKAT)开始,警报传递是不准确的:操作系统   将移动警报以最小化唤醒和电池使用。那里   是支持需要严格交付的应用程序的新API   担保;请参阅setWindow(int,long,long,PendingIntent)和   setExact(int,long,PendingIntent)。应用程序   targetSdkVersion早于API 19将继续看到   以前的行为,其中所有警报都在何时传递   请求。

有关详细信息,请参阅以下链接:https://developer.android.com/reference/android/app/AlarmManager.html

如果有效,请投票并标记此答案!