我需要在日出时每天触发警报。 我像这样得到日出时间:“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);
我希望获得有关前进方向的一般指导。
答案 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个文档,了解如何添加自定义应用逻辑。