2

我很难同时使用 Activity Recognition 和 LocationClient 来获取当前位置。

我想在活动识别返回“IN_VEHICLE”时获取用户当前位置

但是当我尝试连接我的位置客户端时,它给了我这样的错误

 Call connect() and wait for onConnected

关于如何使用活动识别获取用户当前位置的任何想法?

4

1 回答 1

0

我希望我的回答是正确的:)

首先,您得到的错误是,正如我猜测的那样,没有太多代码/上下文,因为您正在尝试在位置客户端实际连接到位置服务之前对其执行某些操作,因此它要求您等待它连接,然后继续你想要的。

如文档中所述 - 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,或者可能有不同的客户端,每个客户端都有一个 API 并单独工作。

希望这有效!如果有不清楚的地方请告诉我

于 2014-09-09T18:26:25.800 回答