Google Activity Recognition API调用过于频繁

时间:2016-02-07 12:07:18

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

我正在尝试使用Google活动识别API,并且仅在活动发生变化时或每30分钟获得一次结果(如果活动未发生变化,则为+ - 10分钟或更长时间)。相反,当我调用下面的代码时,我会在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;
}

我知道the official documentation说:

  

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

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

1 个答案:

答案 0 :(得分:0)

我想我已经明白了。 Google Fit在后台运行,并且不断收听活动更改。因此,我也得到了所有这些结果(正如文档中所写)。