2

我需要每天在日出时触发警报。我得到这样的日出时间:“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); 

我将不胜感激有关前进方向的一般指导。

4

2 回答 2

1

而不是设置每天在不同时间响起的闹钟。您应该每天设置单独的闹钟。我建议您通过在闹钟响起后设置第二天的闹钟来做到这一点。

于 2013-09-23T02:08:07.327 回答
0

Android Awareness API最近发布了新功能,可为您的用例提供简单的解决方案(避免您必须明确管理位置请求和计算日出时间)。实现您想要做的事情的方法是创建和注册一个相对于日出/日落指定的 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 代码片段文档以了解如何添加您的自定义应用程序逻辑。

于 2017-09-01T22:06:50.297 回答