我正在尝试使用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参数更频繁地接收活动。当活动检测服务收到当前活动可能发生变化的信号时,例如,如果设备已经静止很长时间,然后从手机充电器上拔下,它也可以更快地接收更新。
但我认为我太频繁地得到更新(即使活动没有改变)。任何解决方案,因为我想节省一些电池排水。
答案 0 :(得分:0)
我想我已经明白了。 Google Fit在后台运行,并且不断收听活动更改。因此,我也得到了所有这些结果(正如文档中所写)。