I hope my answer is correct :)
First, the error you're getting is, as I'm guessing without much code/context, because you're trying to do something with your location client before it has actually connected to Location Services, hence it's asking you to wait for it to be connected and then proceed with what you want.
As mentioned in the docs - OnConnected() :
After calling connect(), this method will be invoked asynchronously when the connect request has
successfully completed. After this callback, the application can make requests on other methods
provided by the client [...]
To do something else once it's connected you might set a flag in your activity - isConnected - or you can just use mLocationClient.isConnected() which will return if it's connected or not.
Regarding your question, just with activity recognition you shouldn't be able to get the location, just the state (activity). But you can still use both LocationClient and ActivityRecognition.
Keep an eye that LocationClient and ActivityRecognition have been deprecated and you should now use GoogleApiClient. Something like (as shown in https://developer.android.com/google/auth/api-client.html
):
GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
As stated in the docs, you can add multiple APIs to this GoogleApiClient, so you could either have just one client using both LocationServices.API and ActivityRecognition.API, or maybe have different clients, each with an API and work separately.
Hope this works ! Let me know if something's not clear