谷歌玩游戏服务BaseGameUtils中没有getApiClient()

时间:2014-02-15 13:34:28

标签: java android google-play-services google-play-games

我刚刚在我的游戏中添加了Google Play服务排行榜,但存在一些问题。我无法启动排行榜活动。这是我的代码

startActivityForResult(Games.Leaderboards.getLeaderboardIntent(getApiClient(), "leaderboard_id"), 5000);

问题是没有任何getApiClient()方法。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您必须使用GoogleApiClient类型的对象。你的代码应该是这样的:

public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener{
        GoogleApiClient mGoogleClient;
        ...

        @Override
        protected void onCreate(final Bundle savedInstanceState) {
            ...
            //Google Game 
            mGoogleClient = new GoogleApiClient.Builder(this, this, this)
           .addApi(Games.API)
           .addScope(Games.SCOPE_GAMES)
           .setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL)
           .build();

        }

        @Override
        public void onStart(){
            super.onStart();
            //Here is a good place to connect with Google Api
            mGoogleClient.connect();
        }

        @Override
        public void onConnected(Bundle connectionHint) {}

        @Override
        public void onConnectionSuspended(int cause) {}

        @Override
        public void onConnectionFailed(ConnectionResult connectionResult) {}

}

答案 1 :(得分:1)

Games APIs doc指向Android示例项目中BaseGameUtils库中的此方法以及类似的方法(如getApiClientBuilder()):

"如果您的游戏想要将其他Google Play服务API或范围添加到由BaseGameActivity管理的GoogleApiClient,则可以通过在GameHelper对象上调用getApiClientBuilder()来实现此目的。在BaseGameUtils。

我还没有在BaseGameUtils on github中看到这些方法,并且猜测它们会在某些时候更新。

更新:看起来BaseGameUtils中的GameHelper更新为on its way

答案 2 :(得分:1)

如果您的主要活动扩展BaseGameActivity,例如 - 公共类MainActivity扩展了BaseGameActivity

然后你可以在该活动的任何地方使用getApiClient()。

但是如果你想从另一个活动(或非活动类)访问getApiClient(),那么这样做 -

公共类MainActivity扩展了BaseGameActivity {

static GoogleApiClient myclient;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myclient=getApiClient();
} 

...}

然后你只需要打电话给" MainActivity.myclient" 而不是" getApiClient()"来自其他班级。