Google Activity Recognition API を使用しようとしており、アクティビティが変化したとき、または約 30 分ごと (アクティビティが変化しない場合は +-10 分以上) にのみ結果を取得します。代わりに、以下のコードを呼び出すと、IntentService
1 分ごとのように、アクティビティ認識の結果が非常に頻繁に に表示されます。
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 パラメーターよりも頻繁に受信される可能性があります。また、アクティビティ検出サービスが現在のアクティビティが変化する可能性があるという信号を受信すると、更新をより速く受信することもあります。たとえば、デバイスが長時間静止していて、電話の充電器から外された場合などです。
しかし、私はあまりにも頻繁に更新を取得していると思います (アクティビティが変わらなくても)。バッテリーの消耗を抑えたいので、どんな解決策でも。