每24小时增加+5的应用程序

时间:2018-01-29 11:27:24

标签: java android timer

我正在开发一个每24小时计算+5的应用程序,但设备上的时间不应影响此计时器。例如,如果是时钟上午9:00和计时器上的20分钟,并且用户将设备时间设置为9:15,则计时器仍应有20分钟计时。

2 个答案:

答案 0 :(得分:0)

警报有两种通用时钟类型:"已过时的实时时间"和"实时时钟" (RTC)。经过实时使用自系统启动以来的"时间"作为参考,实时时钟使用UTC(挂钟)时间。这意味着经过的实时时间适合根据时间的推移设置警报(例如,每隔30秒触发一次警报),因为它不受时区/区域设置的影响。实时时钟类型更适合依赖于当前区域设置的警报。

您可以将AlarmManager与RTC一起使用,如下所示

 PendingIntent pendingIntent = PendingIntent.getBroadcast(context,DAILY_REMINDER_REQUEST_CODE, yourIntent,           

                                          PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager am = (AlarmManager) context.getSystemService(ALARM_SERVICE);

am.setInexactRepeating(AlarmManager.RTC_WAKEUP, setcalendar.getTimeInMillis(), 

    AlarmManager.INTERVAL_DAY, pendingIntent);

然后使用BroadcastReciever获取事件并执行您的操作:

public class AlarmReceiver extends BroadcastReceiver {

    String TAG = "AlarmReceiver";

    @Override

    public void onReceive(Context context, Intent intent) {

        //Your logic here

    }

}

答案 1 :(得分:0)

您可以使用android.net.SntpClient这是一个简单的SNTP客户端,用于从SNTP服务中检索时间:

SntpClient client = new SntpClient();
if (client.requestTime("time.foo.com")) {
    long now = client.getNtpTime() + SystemClock.elapsedRealtime() - client.getNtpTimeReference();
}

您可以找到实施here