我怎样才能获得API客户端? (Google Play服务)

时间:2014-07-05 08:39:04

标签: java android eclipse google-play-services google-api-client

我正在尝试在我的应用中进行在线评分和修复,使用谷歌播放服务。我是第一次这样做,我无法理解它在代码中的含义。

Games.Achievements.unlock(client, "CgkI2qWM-fIQEAIQAQ");
Games.Achievements.increment(client, "CgkI2qWM-fIQEAIQAQ", 1);

所以,我的问题。我如何获得Api客户端?

我正在尝试使用此代码,来自docs。但是得到一个错误。

client = new GoogleApiClient.Builder(this)
        .addApi(Plus.API)
        .addScope(Plus.SCOPE_PLUS_LOGIN)
        .setAccountName("myMail@gmail.com")
        .build();
        client.connect();

我的日志

07-05 10:25:49.604: E/AndroidRuntime(14410): FATAL EXCEPTION: main
07-05 10:25:49.604: E/AndroidRuntime(14410): java.lang.IllegalStateException: GoogleApiClient is not connected yet.
07-05 10:25:49.604: E/AndroidRuntime(14410):    at com.google.android.gms.internal.hn.a(Unknown Source)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at com.google.android.gms.common.api.c.b(Unknown Source)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at com.google.android.gms.games.internal.api.AchievementsImpl.unlock(Unknown Source)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at com.pahanuch.candiesmaster.Main.Save(Main.java:1926)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at com.pahanuch.candiesmaster.Main$4.run(Main.java:1912)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at android.os.Handler.handleCallback(Handler.java:615)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at android.os.Looper.loop(Looper.java:137)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at android.app.ActivityThread.main(ActivityThread.java:4745)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at java.lang.reflect.Method.invokeNative(Native Method)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at java.lang.reflect.Method.invoke(Method.java:511)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-05 10:25:49.604: E/AndroidRuntime(14410):    at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:1)

连接是异步的。 GoogleApiClient将在连接时执行回调,或者更有可能是第一次无法连接并需要进一步操作。

查看文档,了解如何实施onConnectionFailed()onConnectionSuspended()onConnected()。只有在收到GoogleApiClient回调而没有相应onConnected()回调的情况下,您才能使用onConnectionSuspended()

答案 1 :(得分:1)

Google建议使用BaseGameUtils来管理Play游戏服务。这会自动处理大部分艰苦的工作(例如登录,解锁成就等),并且是与Play游戏服务进行交互的更简单,更安全的方式。

查看this article,其中介绍了如何使用BaseGameUtils进行登录,然后阅读后续成就等等。所有信息都提供给您,以便您快速入门

注意:BaseGameUtils包中提供了android-samples。可以下载here - 查看/BasicSamples/libraries内部以找到它。