0
我有一个用例,其中当天气晴朗时用户活动正在散步,并且还有一个特定位置时将发出通知。我应该如何结合这三个条件?将天气状态与用户活动状态结合
我知道我们可以使用AwarenessFence.and()
添加多个屏蔽,但由于我们将从Snapsot API获取天气数据,因此我们如何在Fence API中添加该条件。
我相信有人会遇到同样的问题,并解决它。请分享您的意见。
我有一个用例,其中当天气晴朗时用户活动正在散步,并且还有一个特定位置时将发出通知。我应该如何结合这三个条件?将天气状态与用户活动状态结合
我知道我们可以使用AwarenessFence.and()
添加多个屏蔽,但由于我们将从Snapsot API获取天气数据,因此我们如何在Fence API中添加该条件。
我相信有人会遇到同样的问题,并解决它。请分享您的意见。
Awareness API尚不支持基于Weather上下文创建栅栏。 正如您所提到的,您可以创建位置和活动的AwarenessFence,然后将它们与AwarenessFence.and()
或AwarenessFence.or()
结合使用。
如果您希望天气包含在通知条件中,您可以做的一件事就是当您收到意向的栅栏回调时请求天气快照,然后在天气与您的目标匹配时发起通知条件。
例如,在Awareness API guide直接从代码片段借款,
public class MyFenceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
FenceState fenceState = FenceState.extract(intent);
if (TextUtils.equals(fenceState.getFenceKey(), "headphoneFence")) {
switch(fenceState.getCurrentState()) {
case FenceState.TRUE:
WeatherResult weatherResult =
Awareness.SnapshotApi.getWeather(mClient).await();
if (weatherResult.getStatus().isSuccess()) {
Weather weather = weatherResult.getWeather();
if (myDesiredWeather(weather)) {
sendNotification();
}
}
break;
case FenceState.FALSE:
Log.i(TAG, "Headphones are NOT plugged in.");
break;
case FenceState.UNKNOWN:
Log.i(TAG, "The headphone fence is in an unknown state.");
break;
}
}
}
}
诚然,这是一个有点实现你想要的东西的一种迂回的方式,但它似乎解决您的使用情况的唯一途径。