将天气状态与用户活动状态相结合

时间:2016-11-23 15:14:11

标签: android google-awareness

我有一个用例,当天气晴朗时,会发出通知,用户活动正在行走,而且还有一个特定的位置。我应该如何结合这三个条件?

我知道我们可以使用.d.ts添加多个围栏,但由于我们将从Snapsot API获取天气数据,我们如何在Fence API中添加该条件。

我相信有人会遇到同样的问题并解决它。请分享您的意见。

1 个答案:

答案 0 :(得分:0)

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;
        }
      }
    }
}

不可否认,这是实现你想要的东西的一种迂回方式,但它似乎是解决你的用例的唯一方法。