私の答えが正しいことを願っています:)
まず、多くのコード/コンテキストなしで推測しているように、実際に位置情報サービスに接続する前に位置情報クライアントで何かをしようとしているために、エラーが発生するため、それを待つように求められます。接続してから、必要なことに進みます。
ドキュメントに記載されているように - OnConnected() :
connect() を呼び出した後、接続要求が正常に完了すると、このメソッドが非同期で呼び出されます。このコールバックの後、アプリケーションはクライアントによって提供される他のメソッドでリクエストを行うことができます [...]
接続後に別のことを行うには、アクティビティにフラグを設定することもできます - isConnected - または、接続されているかどうかを返す mLocationClient.isConnected() を使用できます。
あなたの質問に関しては、アクティビティ認識だけでは、場所を取得することはできず、状態 (アクティビティ) だけを取得する必要があります。ただし、引き続き LocationClient と ActivityRecognition の両方を使用できます。
LocationClient と ActivityRecognition は非推奨になっていることに注意してください。今後は GoogleApiClient を使用する必要があります。次のようなもの ( https://developer.android.com/google/auth/api-client.htmlに示すように
):
GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
ドキュメントに記載されているように、この GoogleApiClient に複数の API を追加できるため、LocationServices.API と ActivityRecognition.API の両方を使用するクライアントを 1 つだけ持つことも、それぞれ API を使用して別々に動作する異なるクライアントを持つこともできます。
これがうまくいくことを願っています!不明な点があればお知らせください