comment se connecter à google play service et de la charge de classement
Je veux connecter mon jeu avec google play services. j'ai lu de la documentation sur android du développeur et de l'essayer à la suite du type un-numéro de l'échantillon et encore ne peut pas charger au classement.
j'ai importer baseGameUtils, mais j'utilise andengine donc je n'ai pas utiliser s'étend BaseGameActivity de google.
ce que j'ai jusqu'à maintenant:
- GooglePlayServicesUtil.isGooglePlayServicesAvailable(ce) retourne le succès
- startActivityForResult(pickAccountIntent, REQUEST_CODE_PICK_ACCOUNT); fonctionne bien et j'ai eu mon nom de compte de onActivityResult(..);
- j'ai déjà mis cela sur mon manifeste.
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
mes questions sont les
1. puis-je utiliser google play service sans s'étend BaseGameActivity?
2. si j'utilise gameHelper.beginUserInitiatedSignIn(); après que j'ai obtenu le nom de mon compte, j'ai eu ce sur le journal d'un chat. (ce que ce connecté veux dire? parce que j'ai toujours l'erreur sur la question suivante)
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 . comment puis-je utiliser connect()? j'ai lu et essayé sur gameClient et GameClientBuilder mais je n'ai aucune idée de comment l'utiliser. quand j'ai essayé d'exécuter ce code.
startActivityForResult(gameHelper.getGamesClient().getAllLeaderboardsIntent(), RC_UNUSED);
j'ai eu ce journal.
08-25 00:09:05.660: E/AndroidRuntime(11222): java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
4 . pour utiliser au classement je sais que je doit utiliser le code à partir de google play store comme CgkIx****AIQAA. mais je n'ai pas trouvé où je dois mettre ce code à la charge du classement.
désolé pour la longue question, mais je pense que si il y a un exemple qui est seulement pour vous connecter et accéder aux succès, ou de classement, il va répondre à toutes mes question. s'il vous plaît ne me dites pas de voir le type d'un numéro d'échantillon, je l'ai fait et j'ai besoin d'un autre exemple de code.
mise à jour, mon ciselée code
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");
}
}
OriginalL'auteur gondai yosuke | 2013-08-24
Vous devez vous connecter pour publier un commentaire.
Oui. Jetez un oeil à la
BaseGameActivity
source et voir ce que cela en grande partie juste enveloppementsGameHelper
. Vous pouvez mettre en œuvre les appels àGameHelper
vous-même - en fait, vous pouvez probablement copiez le code directement à partirBaseGameActivity
. Je suis un peu confus, car il semble que votre code est déjà à l'aide deGameHelper
. Il semble que vous mélangezGameHelper
appels avecBaseGameActivity
appels. Vous ne pouvez pas faire cela, et il en résultera... les erreurs que vous avez trouvé.Le LogCat vous voyez signifie que tous vos clients sont connectés. La valeur par défaut appel à
GameHelper.setup()
juste des demandes des clients des Jeux. Si vous n'utilisez pasBaseGameActivity
et veulent différents clients, faire:beginUserInitiatedSignIn()
est une méthode asynchrone avec un rappel lorsqu'elle se termine. Exécutez-vous de cette façon?GameHelper.GameHelperListener
est l'interface à implémenter. Si vous utilisez gameHelper, assurez-vous d'enregistrer le rappel. Voir lathis
dans l'appel de la configuration ci-dessus? C'est l'enregistrement de la fonction de rappel (this
est mon activité principale).Comme je l'ai dit ci-dessus, il semble que vous mélangez
GameHelper
appels avecBaseGameActivity
appels. LeGameHelper
qui est connecté est leBaseGameActivity.mHelper
exemple, de ne pas toutGameHelper
vous pourriez avoir instancié. Assurez-vous que si vous utilisezBaseGameActivity
que vous n'êtes pas à l'aide deGameHelper
.Si vous souhaitez afficher un seul classement, utilisez le
GamesClient.getLeaderboardIntent(string, int)
ou méthode pour obtenir leIntent
. La chaîne est le code que vous avez (CgkIx****AIQAA).Encore une fois, assurez-vous que vous utilisez le bon
getGamesClient()
méthode, en fonction de si vous utilisezBaseGameActivity
ouGameHelper
directement.1. Oui. 2. Client, dans ce cas, le client API. Vous souhaitez utiliser le Google Play Games Services client pour des réalisations et classements. Multijoueur nécessite le Plus de client ainsi. 3. Si vous utilisez uniquement les clients des Jeux, il suffit d'appeler
gameHelper.setup()
immédiatement aprèsgameHelper = new GameHelper(this);
. Votre appel, pour l'installation est très cassé, vous ne pouvez passer à l'entier drapeaux Client_NONE, Client_GAMES, Client_PLUS, CLient_APPSTATE, ou Client_ALL (ou une combinaison des 4 premiers OU avais).j'ai remarqué ce que tu veux dire que je mélange gameHelper avec baseGameActivity. actuellement j'ai déjà mis le code que vous avez dit. mais stil-il pas appelé à l'auditeur. pour l'instant, quand je lance BeginUserInitiatedSignIn() va bien, mais après avoir choisi ma carte d'identité, mon gameHelper.isSignedIn() est faux. et bien sûr. des conseils??
Il est probable que vous rencontrez des problèmes maintenant avec les touches. Avez-vous pulbished votre Google Play Services de Jeu de paramètres dans le Jeu de la console? Êtes-vous sûr que la clé que vous signez vos APK avec correspondant à la clé que vous avez utilisé pour créer le BPG article? Recherche autour sur stackoverflow, vous trouverez beaucoup de discussion de BPG signe à des échecs. Personnellement, parfois, même si tout est mis en place à droite, mon debug Apk peut ou ne peut pas signer correctement.
OriginalL'auteur Jeremy Scoggins
Ici est l'information de base comment utiliser GameHelper sans BaseGameActivity:
https://developers.google.com/games/services/android/init#using_gamehelper_without_basegameactivity
OriginalL'auteur elenatres