【问题标题】:Combine Weather state with User Activity state结合天气状态和用户活动状态
【发布时间】:2016-11-23 15:14:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: android google-awareness


    【解决方案1】:

    Awareness API 尚不支持基于天气上下文创建栅栏。 正如您所提到的,您可以为位置和活动创建 AwarenessFence,然后将它们与 AwarenessFence.and()AwarenessFence.or() 结合起来。

    如果您希望天气包含在您的通知条件中,您可以做的一件事是在收到有关意图的围栏回调时请求天气快照,然后在天气符合您的目标条件时启动通知.

    例如直接借用Awareness API guide中的代码sn-ps,

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

    诚然,这是实现您想要的东西的一种迂回方式,但它似乎是解决您的用例的唯一方法。

    【讨论】:

      猜你喜欢
      • 2012-03-09
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多