我想用谷歌播放服务连接我的游戏。我已阅读有关Android开发人员的文档,并尝试按照类型数字样本继续加载排行榜。
我有导入baseGameUtils,但我使用andengine所以我没有使用谷歌扩展BaseGameActivity。
直到现在我所拥有的:<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
我的问题是
1.我可以使用谷歌播放服务而无需扩展BaseGameActivity吗?
2.如果我使用gameHelper.beginUserInitiatedSignIn();在我得到我的帐户名后,我在log cat上得到了这个。 (这个连接意味着什么?因为我在下一个问题上仍然有错误)
08-25 00:09:01.890: D/BaseGameActivity(11222): isGooglePlayServicesAvailable returned 0
08-25 00:09:01.890: D/BaseGameActivity(11222): beginUserInitiatedSignIn: starting new sign-in flow.
08-25 00:09:01.890: D/BaseGameActivity(11222): All clients now connected. Sign-in successful.
08-25 00:09:01.890: D/BaseGameActivity(11222): All requested clients connected. Sign-in succeeded!
3。我如何使用connect()?我已阅读并尝试了关于gameClient和GameClientBuilder但我不知道如何使用它。当我尝试运行此代码。
startActivityForResult(gameHelper.getGamesClient().getAllLeaderboardsIntent(), RC_UNUSED);
我得到了这个日志。
08-25 00:09:05.660: E/AndroidRuntime(11222): java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
4。使用排行榜我知道我必须使用谷歌游戏商店的代码,如CgkIx * ** * AIQAA。但我没有找到我必须将此代码加载到排行榜的位置。
很抱歉很长时间的问题,但我想如果有一个样本仅用于连接和访问成就或排行榜,它将回答我的所有问题。请不要告诉我看到一个数字样本,我这样做了,我需要另一个示例代码。
更新,我的剪辑代码
public class MainMenu extends Activity
implements OnClickListener, GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener, GameHelperListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_menu);
gameHelper = new GameHelper(this);
}
@Override
public void onClick(View v) {
if(v.equals(loadData)) {
if(gameHelper.isSignedIn()) {
gameHelper.setup(this, GameHelper.CLIENT_GAMES, Scopes.GAMES);
startActivityForResult(gameHelper.getGamesClient().getAllLeaderboardsIntent(), RC_UNUSED);
}
}
else if(v.equals(loginButton)) {
Intent googlePicker = AccountPicker.newChooseAccountIntent(null,null,new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE},true,null,null,null,null) ;
startActivityForResult(googlePicker, REQUEST_CODE_PICK_ACCOUNT);
}
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
if(requestCode==REQUEST_CODE_RECOVER_PLAY_SERVICES) {
if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Google Play Services must be installed.", Toast.LENGTH_SHORT).show();
finish();
}
return;
}
else if(requestCode==REQUEST_CODE_PICK_ACCOUNT) {
if (resultCode == RESULT_OK) {
String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
gameHelper.beginUserInitiatedSignIn();
}
else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "This application requires a Google account.", Toast.LENGTH_SHORT).show();
finish();
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
// this 2 methods not called, is this also because my code is wrong?
@Override
public void onSignInFailed() {
Log.d("rush", "on sign in failed");
}
@Override
public void onSignInSucceeded() {
Log.d("rush", "on sign in succeed");
}
}
答案 0 :(得分:2)
是。看看BaseGameActivity
来源,看看它主要是包裹GameHelper
。您可以自己实现对GameHelper
的调用 - 实际上,您可以直接从BaseGameActivity
复制一些代码。我有点困惑,因为您的代码似乎已经在使用GameHelper
。看起来您正在将GameHelper
电话与BaseGameActivity
电话混合在一起。你不能这样做,这会导致......你得到的错误。
您看到的LogCat意味着您的所有客户端都已连接。对GameHelper.setup()
的默认调用只是请求游戏客户端。如果您没有使用BaseGameActivity
并且想要不同的客户,请执行以下操作:
gameHelper = new GameHelper(this);
gameHelper.setup(this, GameHelper.CLIENT_GAMES | GameHelper.CLIENT_PLUS);
beginUserInitiatedSignIn()
是一个异步方法,在完成后会带回调。你是那样运行的吗? GameHelper.GameHelperListener
是要实现的接口。如果您使用的是gameHelper,请务必注册回调。请参阅上面设置调用中的this
?那是注册回调(this
是我的主要活动)。
如上所述,看起来您正在将GameHelper
次来电与BaseGameActivity
次来电混合。连接的GameHelper
是BaseGameActivity.mHelper
实例,而不是您实例化的任何GameHelper
。如果您使用的是BaseGameActivity
,请确保不使用GameHelper
。
如果您想显示单个排行榜,请使用GamesClient.getLeaderboardIntent(string, int)
或方法获取Intent
。字符串是您拥有的代码(CgkIx **** AIQAA)。
startActivityForResult(gameHelper.getGamesClient().getLeaderboardIntent(
leaderboard_id, RC_UNUSED);
同样,请确保使用正确的getGamesClient()
方法,具体取决于您是直接使用BaseGameActivity
还是GameHelper
。
答案 1 :(得分:0)
以下是如何在没有BaseGameActivity的情况下使用GameHelper的基本信息:
https://developers.google.com/games/services/android/init#using_gamehelper_without_basegameactivity