我想设置在不同时间每天触发的重复警报

时间:2013-09-23 01:37:25

标签: android alarmmanager alarm repeat

我需要在日出时每天触发警报。 我像这样得到日出时间:“06:55”

Location location = new Location(latitude, longitude);
SunriseSunsetCalculator calculator = new SunriseSunsetCalculator(location, "GMT"+localTime);
String officialSunrise = calculator.getOfficialSunriseForDate(Calendar.getInstance());

这意味着每天触发的时间会有所不同。

alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP, startmillis,intervalmillis, wakeUp); 

我希望获得有关前进方向的一般指导。

2 个答案:

答案 0 :(得分:1)

而不是设置每天不同时间发出的闹钟。您应该每天设置单独的警报。我建议您在闹钟响起后设置下一天的闹钟来执行此操作。

答案 1 :(得分:0)

Android Awareness API具有recently announced个新功能,可为您的用例提供简单的解决方案(避免您必须明确管理位置请求和计算日出时间)。实现您要做的事情的方法是创建并注册相对于日出/日落指定的TimeFence。

例如:

// Create TimeFence
AwarenessFence sunriseFence =
    TimeFence.aroundTimeInstant(TimeFence.TIME_INSTANT_SUNRISE,
        0, 5 * ONE_MINUTE_MILLIS);

// Register fence with Awareness.
Awareness.FenceApi.updateFences(
    mGoogleApiClient,
    new FenceUpdateRequest.Builder()
        .addFence("fenceKey", sunriseFence, myPendingIntent)
        .build())
    .setResultCallback(new ResultCallback<Status>() {
        @Override
        public void onResult(@NonNull Status status) {
            if (status.isSuccess()) {
                Log.i(TAG, "Fence was successfully registered.");
            } else {
                Log.e(TAG, "Fence could not be registered: " + status);
            }
        }
    });

当栅栏在日出时评估为TRUE,并且在日出后5分钟根据上述设置评估为FALSE时,您将收到回调。

请查看Fence API code snippets个文档,了解如何添加自定义应用逻辑。