2014-02-15 70 views
1

我刚刚添加谷歌播放服务排行榜到我的游戏,但也有一些问题。我无法启动排行榜活动。这里是我的代码没有getApiClient()在谷歌播放游戏服务BaseGameUtils

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

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

回答

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) {} 

} 
+0

这有什么用? – Andrew

1

Games APIs doc指向在Android样本项目BaseGameUtils库这个方法以及类似的方法,如getApiClientBuilder():

“如果你的游戏要将其他Google Play服务API或范围添加到由BaseGameActivity管理的GoogleApiClient,它可以通过调用BaseGameUtils中的GameHelper对象的getApiClientBuilder()来完成此操作。

我还没有看到BaseGameUtils on github中的那些方法,我猜测他们会在某个时候更新。

UPDATE:看起来像BaseGameUtils中的GameHelper更新是on its way

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()”。

相关问题