Activity Recognition API を扱っており、バックグラウンドで実行しようとしています。ということでPlay Servicesに接続して常時稼働するサービスを作ってみました。サービスが破棄され、再度作成されたときに乾杯します。問題は、サービスが実行されていても、しばらくするとアクティビティの検出が停止することです。
以下は、サービスのコードの一部です。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
buildGoogleClient();
return START_STICKY;
}
private void buildGoogleClient()
{
mGoogleApiClientActivityDetection = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(ActivityRecognition.API)
.build();
mGoogleApiClientActivityDetection.connect();
}
@Override
public void onConnected(Bundle bundle)
{
if (mGoogleApiClientActivityDetection.isConnected() && detectionConnectionSet == false)
{
detectionConnectionSet = true;
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
mGoogleApiClientActivityDetection,
Constants.ACTIVITY_DETECTION_INTERVAL_IN_MILLISECONDS,
PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
}
}
また、接続されていない場合に再接続する onConnectionSuspended と onConnectionFailed をオーバーライドします。
このコードはしばらくの間正常に動作しますが、突然停止します。誰もが理由についていくつかのアイデアを持っていますか?
ありがとう。