谷歌游戏服务版本22上找不到LocationClient类。

30

我刚刚将 Google Play 服务更新到 rev 22,但是 LocationClient 类似乎已经不见了。这是怎么回事?


5
自去年夏季起,LocationClient 已被弃用,而且显然现在已完全摒弃。现在有一个新的API可以替代它,使用 GoogleApiClient。请参考https://github.com/commonsguy/cw-omnibus/tree/master/Location/FusedNew以获得一个示例应用程序。 - CommonsWare
1
上次我查看时,文档几乎不存在。我不得不从各种来源(包括在Stack Overflow上的其他问题)中拼凑出我的示例应用程序(以及使用它的书籍章节更新)。再说了,我已经有一段时间没有查找文档了,所以有可能他们在我没注意的时候发布了教程或其他东西。 :-) - CommonsWare
7
官方培训指南https://developer.android.com/training/location/retrieve-current.html仍在使用LocationClient。 - Price
上次我检查的时候,Android Studio 不支持 NDK 相关内容。但实际上,它是支持的,可以通过使用标准的 NDK 构建工具(虽然没有文档,但有可用的示例)或者更简单的情况下直接通过 Gradle(绕过 makefiles)来实现。 - CommonsWare
"或者对于更简单的情况,可以直接通过Gradle(绕过makefiles)进行操作。" -- 哦,那就更加舒适了,但是似乎需要很大的学习曲线才能实现所有的迁移?我对Gradle也不是很了解,但我很快会尝试一下,谢谢。 - ThanosFisherman
显示剩余6条评论
1个回答

71

在@CommnsWare所说的基础上,这里提供迁移到Fused API的步骤:

步骤1:获取GoogleApiClient实例,而不是LocationClient

ConnectionCallback(在下面的示例中为mConnectionCallbacks、mOnConnectionFailedListener)需要进行轻微修改,但应该很简单。

googleApiClient = new GoogleApiClient.Builder(this)
        .addApi(LocationServices.API)
        .addConnectionCallbacks(mConnectionCallbacks)
        .addOnConnectionFailedListener(mOnConnectionFailedListener)
        .build();

第二步: 更新连接和断开调用。

locationClient.connect()替换为googleApiClient.connect(),将locationClient.disconnect()替换为googleApiClient.disconnect()

第三步:使用LocationServices.FusedLocationApi发送请求。 例如:

LocationServices.FusedLocationApi.getLastLocation(googleApiClient)
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, mLocationListener);

希望这能帮到你!


3
是的,这就是我刚使用@CommonsWare的示例弄清楚的步骤。对于接口,您只需要用GoogleApiClient.ConnectionCallbacks、GoogleApiClient.OnConnectionFailedListener替换旧的接口,而LocationListener仍然保持不变,只是不再有onDisconnect方法了。 - ThanosFisherman
在特定时间间隔内请求位置更新怎么样? GoogleApiClient仍然支持吗? - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接