Android Studio使用Icon设置精确闹钟

Min*_*ode 6 java android alarmmanager android-alarms

我试图制作一个闹钟应用程序.目前我正在使用AlarmManager.我的minSdkVersion是API等级19.

问题是,我不能得到像其他应用程序一样的确切警报.例如,Playstore中的AlamDroid示例:当时钟切换到设置的时间时,它会在秒中触发警报.它也适用于API 19.

我的代码现在是:

 Calendar calendar = Calendar.getInstance();
 calendar.setTimeInMillis(System.currentTimeMillis());
 calendar.set(Calendar.HOUR_OF_DAY, hour);
 calendar.set(Calendar.MINUTE, minute);

 if (calendar.getTimeInMillis() < System.currentTimeMillis())
     calendar.add(Calendar.HOUR, 24);

 Intent myIntent = new Intent(context, AlarmReceiver.class);
 myIntent.putExtra(DB_ID, myID);
 pendingIntent = PendingIntent.getBroadcast(context, myID, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
 alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)

问题是在AlarmDroid中,我在API Levl 19上获得了一个位于Android状态栏上方的AlarmIcon.但是他是怎么做到的?因为alarmManager.setAlarmClock只有在API> = 21时才可用.而Icon只有这个!

但是,AlarmDroid的准确性在第二阶段是完美的!虽然我的情况更糟.除了AlarmManager还有其他方法吗?或者:我做错了什么?为什么我无法像PlayStore中的其他AlarmClock应用程序那样设置非常准确的警报.即使状态栏中有通知......

编辑:在AlarmDroid和其他警报应用程序上,在警报触发前一分钟内状态栏中有一个通知.这似乎就像每个AlarmApp都有它一样内置!

编辑2:Appstore中的其他警报怎么可能是准确的?

编辑 - >可能的解决方案:

对于所有有相同问题的人,请在这里查看:

链接到Stackoverflow问题 - 来自PawełNadolski/ Mathieu H.的回答

这可能是三星手机的解释/解决方案.他们似乎正在检查Pakagename的关键字,如"闹钟","警报",以使报警更准确!

Min*_*ode 0

我找到了解决方案,它甚至可以在三星设备上使用。不确定是否还需要包含“alarm”的包名称。但这不是问题,因为您只需创建一个附加包即可。

如果您希望闹钟精确到秒,只需将秒数也设置为 0:

 Calendar calendar = Calendar.getInstance();
 calendar.setTimeInMillis(System.currentTimeMillis());
 calendar.set(Calendar.HOUR_OF_DAY, hour);
 calendar.set(Calendar.MINUTE, minute);
 calendar.set(Calendar.SECOND, 0); // This part will solve the Problem!
Run Code Online (Sandbox Code Playgroud)

就是这样,解决了我的问题!