wie, um eine Verbindung zum google-play-Dienst, und laden Rangliste
Möchte ich eine Verbindung zu meinem Spiel mit google play service. ich habe gelesen, Dokumentation auf der android-developer und versuchen Sie, folgende Typ-a-number sample-und kann immer noch nicht laden Rangliste.
habe ich importieren baseGameUtils, aber ich benutze andengine, damit ich Sie nicht verwenden, reicht BaseGameActivity von google.
was habe ich bis jetzt:
- GooglePlayServicesUtil.isGooglePlayServicesAvailable () return Erfolg
- startActivityForResult(pickAccountIntent, REQUEST_CODE_PICK_ACCOUNT); funktioniert gut und ich habe meinen account-Namen von onActivityResult(..);
- ich bereits auf meinem manifest.
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
meine Fragen sind
1. kann ich google play service erstreckt sich ohne BaseGameActivity?
2. wenn ich gameHelper.beginUserInitiatedSignIn(); nachdem ich meinen account Namen, ich habe diese auf Protokoll-cat. (was dieser verbunden meine? weil ich immer noch Fehler auf nächste Frage)
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 . wie kann ich mit connect()? ich habe gelesen und versucht über den gameClient und GameClientBuilder aber ich habe keine Ahnung wie man das nutzen. wenn ich habe versucht, diesen code auszuführen.
startActivityForResult(gameHelper.getGamesClient().getAllLeaderboardsIntent(), RC_UNUSED);
bekam ich das Protokoll.
08-25 00:09:05.660: E/AndroidRuntime(11222): java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
4 . verwenden leaderboard-ich weiß, ich muss verwenden Sie code aus dem google play store wie CgkIx****AIQAA. aber ich habe nicht gefunden, wo muss ich diesen code zum laden Rangliste.
sorry für die lange Frage, aber ich denke, wenn es ist ein Beispiel, das nur für die Verbindung, und entweder auf Leistung oder leaderboard wird alle beantworten meine Frage. bitte erzählen Sie mir nicht, um zu sehen, Typ-a-number sample, ich habe das und brauche ich ein anderes Beispiel-code.
update, meine geschnippelt 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");
}
}
InformationsquelleAutor gondai yosuke | 2013-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja. Werfen Sie einen Blick auf die
BaseGameActivity
Quelle und sehen, dass es weitgehend nur wrapsGameHelper
. Sie implementieren können, die Aufrufe vonGameHelper
sich selbst - in der Tat, können Sie wahrscheinlich kopieren Sie einige code, der direkt vonBaseGameActivity
. Ich bin ein bisschen verwirrt, denn es scheint, dass der code bereits verwendetGameHelper
. Es sieht aus wie Sie mischenGameHelper
Anrufe mitBaseGameActivity
Anrufe. Sie kann dies nicht tun, und es wird in Folge... Fehler, wie Sie immer sind.Den LogCat sehen Sie bedeutet, dass alle clients verbunden sind. Der Standard-Aufruf zu
GameHelper.setup()
nur Anfragen der Spiele-client. Wenn Sie nicht mitBaseGameActivity
und möchten anderen clients tun:beginUserInitiatedSignIn()
ist eine asynchrone Methode mit einem Rückruf wenn es fertig ist. Werden Sie ausgeführt, dass es der Weg?GameHelper.GameHelperListener
ist die Schnittstelle zu implementieren. Wenn Sie mit gameHelper, stellen Sie sicher, dass die Registrierung des callback. Finden Sie diethis
im setup-Aufruf oben? Das registrieren der callback (this
ist meine Haupttätigkeit).Als ich sagte oben, es sieht aus wie Sie mischen
GameHelper
Anrufe mitBaseGameActivity
Anrufe. DieGameHelper
angeschlossen ist, ist dieBaseGameActivity.mHelper
Instanz, nichtGameHelper
haben Sie vielleicht instanziiert. Stellen Sie sicher, dass, wenn Sie mitBaseGameActivity
dass Sie nicht mitGameHelper
als gut.Anzeigen wollen Sie ein Einzel-Rangliste verwenden Sie die
GamesClient.getLeaderboardIntent(string, int)
oder-Methode, um denIntent
. Der string ist der code, den Sie haben (CgkIx****AIQAA).Wieder, stellen Sie sicher, dass Sie die richtige
getGamesClient()
Methode, je nachdem, ob Sie mitBaseGameActivity
oderGameHelper
direkt.1. Ja. 2. Client, in diesem Fall ist die API-client. Sie wollen, verwenden Sie die Google Play Games Services client für Errungenschaften und Bestenlisten. Multiplayer erfordert die Plus-client. 3. Wenn Sie nur den Spiele-client, rufen Sie einfach
gameHelper.setup()
sofort nachgameHelper = new GameHelper(this);
. Ihr Aufruf von setup ist sehr gebrochen - Sie können nur übergeben Sie es der integer-flags Client_NONE, Client_GAMES, Client_PLUS, CLient_APPSTATE, oder Client_ALL (oder eine Kombination von den ersten 4 ODER würde zusammen).ich habe bemerkt, was du meinst, ich Misch gameHelper mit baseGameActivity. momentan habe ich bereits den code wie du gesagt hast. aber noch ist es nicht als Hörer. für jetzt, wenn ich BeginUserInitiatedSignIn() ist gut zu gehen, aber nachdem dann meine id, meine gameHelper.isSignedIn() ist immer noch falsch. und natürlich. jede Beratung??
Es ist wahrscheinlich, dass Sie Probleme haben sich jetzt mit den Schlüsseln. Haben Sie pulbished der Google Play Game Services-Einstellungen in den Spielen für die Konsole? Sind Sie sicher, dass der Schlüssel, den Sie signieren Ihre APK mit passt der Schlüssel, den Sie zum erstellen der GPGS Artikel? Suchen, um auf stackoverflow, finden Sie reichlich Diskussion von GPGS anmelden Ausfälle. Persönlich, manchmal sogar, wenn alles richtig eingestellt, meine debug-APKs kann oder kann sich nicht anmelden richtig.
InformationsquelleAutor Jeremy Scoggins
Hier ist die grundlegende Informationen wie zu verwenden GameHelper ohne BaseGameActivity:
https://developers.google.com/games/services/android/init#using_gamehelper_without_basegameactivity
InformationsquelleAutor elenatres