【问题标题】:'Activity Detection API' Get current activity only once'Activity Detection API' 只获取一次当前活动
【发布时间】:2016-02-23 15:29:44
【问题描述】:

我已成功设置活动识别跟踪,但它需要使用活动更新间隔。

ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
            googleApiClient,
            updateInterval,
            activityRecognitionPendingIntent)
            .setResultCallback(this);

有没有办法避免这种情况并在需要时询问活动?

例如:ActivityRecognition.getCurrentActivities();?

【问题讨论】:

  • 正如我在documentation 中所读到的,需要间隔。我建议您使用较大的值来减少活动检测,同时延长电池寿命。例如,使用 60000 或 1 分钟的值,这样您就可以减少检查应用程序的频率。 ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(googleApiClient, 60000, activityRecognitionPendingIntent);

标签: android google-play-services activity-recognition


【解决方案1】:

需要更多信息才能完全回答您的问题,但这里有一个需要验证的事项清单:

1.您是否进行了 GoogleApiClient.Builder api 调用?假设您的代码示例中使用了参数 googleApiClient。

  1. 您调用的类是否实现了 GoogleApiClient.ConnectionCallbacks、GoogleApiClient.OnConnectionFailedListener、ResultCallback

  2. 您的 ActivityRecognitionPendingIntent 方法是否实例化一个新 Intent 并使用它调用 PendingIntent.getService?

  3. 您的 pendingIntent.getService 调用是否使用 PendingIntent.FLAG_UPDATE_CURRENT

【讨论】:

    【解决方案2】:

    如果您希望收到有关活动更改的通知,但仅当它与您当前的活动不同时,请执行以下操作:

    1. 捕获初始活动并以可持久化的方式(静态变量、SharedPreferences 等)存储enum
    2. 如果您获得下一个更新,请检查它是否与上一个相同enum。如果没有,请报告新活动。如果相同,就通过。
    3. 将间隔设置为您希望更新发生的频率。更长的延迟将大大提高节能效果。

    【讨论】:

      猜你喜欢
      • 2015-11-29
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多