Я пытаюсь использовать API распознавания активности Google и получать только результаты при изменении активности или примерно каждые 30 минут (+ - 10 минут или более, если действие не изменяется). Вместо этого, когда я называю кусок кода ниже, я получаю результаты деятельности Признание очень часто в моей IntentService
, как каждую минуту:Слишком часто используется API распознавания активности Google
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, если другое приложение также запросило обновления активности с большей скоростью. Он также может получать обновления быстрее, когда служба обнаружения активности получает сигнал о том, что текущая активность может измениться, например, если устройство все еще длительное время, а затем отключено от зарядного устройства телефона.
Но я просто думаю, что получаю обновления слишком часто (даже если активность не меняется). Любые решения, так как я хочу сэкономить дренаж батареи.
Возможный дубликат: http://stackoverflow.com/questions/27500602/android-activityrecognitionapi-requestactivityupdates-are-too-frequent-how-can –