0

我正在尝试使用 Google Activity Recognition API,并且仅在活动更改或大约每 30 分钟(如果活动不更改,则 +- 10 分钟或更长时间)时获得结果。相反,当我调用下面的代码时,我经常在我的 Activity Recognition 中得到结果IntentService,就像每分钟一样:

ActivityRecognition
            .ActivityRecognitionApi
            .requestActivityUpdates(mGoogleApiClient, 60000 * 30, getSensingServicePendingIntent())
            .setResultCallback(this);

创建PendingIntent对象的方法:

private PendingIntent getSensingServicePendingIntent(Integer userLabel) {
    Intent i = new Intent(mContext, SenseDataIntentService.class);

    return PendingIntent
            .getService(mContext, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
}

获取方法GoogleApiClient

 private GoogleApiClient buildGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(mContext)
            .addApi(ActivityRecognition.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    return mGoogleApiClient;
}

我知道官方文档是这样说的:

如果另一个应用程序也以更快的速度请求活动更新,则活动可能会比 detectionIntervalMillis 参数更频繁地接收。当活动检测服务接收到当前活动可能发生变化的信号时,它也可以更快地接收更新,例如,如果设备已经静止了很长时间,然后从手机充电器上拔下。

但我只是认为我太频繁地获得更新(即使活动没有改变)。任何解决方案,因为我想节省一些电池消耗。

4

1 回答 1

0

我想我已经想通了。Google Fit 在后台运行,它不断地监听活动变化。因此,我也得到了所有这些结果(正如文档中所写的那样)。

于 2016-02-08T10:52:55.117 回答