Mit den Google Play Games Services können Sie eine Reihe von Funktionen in Ihre Android-Apps integrieren, darunter Ranglisten, Erfolge, Multiplayer-Gameplay, Cloud-Speicher und Google+ Anmeldung.
In diesem Tutorial werden wir die Schritte durcharbeiten, die erforderlich sind, um einem einfachen Android-Spiel Erfolge hinzuzufügen. Wir bereiten die Entwicklungsumgebung für die Verwendung von Google Play Game Services vor, definieren eine Leistung in der Entwicklerkonsole und implementieren die Interaktion für die Erfolge im Spiel.
Um die Google Play Game Services-Tools nutzen zu können, müssen wir unsere IDE vorbereiten. Sowie die Verwendung der Google Play-Dienste Bibliothek, die Sie für alle Google-Dienste benötigen, verwenden wir die BaseGameUtils Eine Ressource, die eine Reihe von Klassen enthält, die besonders bei der Entwicklung von Spielen nützlich sind.
Erstellen Sie zunächst eine neue App in Ihrer IDE. Der Beispielcode dieses Tutorials enthält ein einfaches Spiel, in dem der Benutzer eine zufällig ausgewählte Zahl erraten muss. Sie können dieses Projekt verwenden, um mit der Entwicklung mit Google Play Game Services zu beginnen, wenn Sie möchten. Erstellen Sie ein neues Android-Projekt und wählen Sie Namen und Einstellungen dafür aus.
Wenn Sie die Beispiel-App nicht im Download verwenden, möchten Sie möglicherweise Ihr Gameplay zu diesem Zeitpunkt implementieren und dabei berücksichtigen, wofür Sie eine Errungenschaft einsetzen möchten. Für die Beispiel-App vergeben wir einfach eine Leistung, wenn der Benutzer eine korrekte Antwort auswählt.
In diesem Schritt machen wir die IDE und unser Projekt für die Nutzung der Google Play Games Services und der Dienstprogramme bereit. Öffnen Sie Ihren Android SDK Manager, den Sie unter finden Fenster Menü in Eclipse. Scrollen Sie nach unten, bis Sie das sehen Extras Ordner, erweitern Sie ihn und wählen Sie Google Play-Dienste und das Google Repository. Möglicherweise brauchen Sie auch die Google APIs-Plattform Wenn Sie den Emulator testen möchten, wählen Sie dies ebenfalls aus. Letztere finden Sie in den Verzeichnissen für aktuelle Versionen der Android-Plattform. Installieren Sie die ausgewählten Pakete und akzeptieren Sie ggf. Lizenzen.
Wir müssen auch einige Ressourcen in den eigentlichen Arbeitsbereich aufnehmen, damit wir sie in der App referenzieren können, beginnend mit der Google Play Services-Bibliothek. Sie sollten es bei finden / extras / google / google_play_services / libproject / google-play-services_lib / in Ihrem SDK-Ordner. Erstellen Sie eine Kopie der Bibliothek und fügen Sie sie an einem anderen Ort auf Ihrem Computer ein.
Importieren Sie zurück in Eclipse die Bibliothek, indem Sie wählen Importieren> Android> Importieren Sie vorhandenen Android-Code in den Arbeitsbereich von dem Datei Speisekarte. Navigieren Sie zu dem Speicherort, in den Sie die Bibliothek kopiert haben, wählen Sie die Bibliothek aus und importieren Sie sie. Die Bibliothek sollte als Projekt in Ihrem Eclipse Package Explorer und Arbeitsbereich angezeigt werden.
Klicken Sie mit der rechten Maustaste auf das Bibliotheksprojekt in Eclipse, und wählen Sie aus Eigenschaften und navigieren Sie zum Android-Bereich. Wählen Sie ein Google-APIs-Build-Ziel aus und stellen Sie sicher, dass Ist Bibliothek wird geprüft. Die Bibliothek sollte nun in Ihrer App referenziert werden können.
Lass uns jetzt die bekommen BaseGameUtils Ressource auch in Ihre IDE. Laden Sie es von der Beispielspiele Abschnitt des Entwicklerportals von Google. Da der Code auf GitHub gehostet wird, können Sie ihn durchsuchen und auf die Handbücher von GitHub zugreifen.
Importieren Sie die BaseGameUtils-Ressource nach Eclipse, indem Sie dieselbe Methode verwenden, die Sie für die Play Services-Bibliothek verwendet haben Importieren> Android> Importieren Sie vorhandenen Android-Code in den Arbeitsbereich von dem Datei Speisekarte. Klicken Sie im Package Explorer mit der rechten Maustaste auf das BaseGameUtils-Projekt, und stellen Sie sicher, dass dies der Fall ist Ist Bibliothek wird geprüft.
In unserer App können wir jetzt auf die Ressourcen der Google Play Services Library und BaseGameUtils verweisen.
Wählen Sie Ihre Spiel-App im Eclipse Package Explorer aus, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften wie bei den importierten Ressourcen. In dem Android Abschnitt, diesmal klicken Hinzufügen in dem Bibliothek Bereich. Wählen Sie beide aus Google Play-Dienste lBibliothek und BaseGameUtils als Bibliotheken zu Ihrem Projekt hinzufügen.
Das ist die IDE, die für die Entwicklung mit Games Services eingerichtet wurde.
Um Erfolge in Ihrem Spiel nutzen zu können, müssen Sie das Spiel dem hinzufügen Google Play-Entwicklerkonsole. Melden Sie sich bei der Entwicklerkonsole an und klicken Sie auf Spiele-Services Klicken Sie auf die Schaltfläche links neben der Konsole und wählen Sie Richten Sie Google Play-Spieldienste ein wenn Sie sie noch nicht benutzt haben.
Klicken Sie, um ein neues Spiel hinzuzufügen, wählen Sie Ich verwende noch keine Google-APIs in meinem Spiel, und wählen Sie einen Namen und eine Kategorie für Ihr Spiel. Klicken Fortsetzenum zum nächsten Schritt zu gelangen.
In dem Spieldetails In diesem Abschnitt müssen Sie nur den Titel Ihres Spiels hinzufügen, um Ihre App zu testen.
Klicken Verknüpfte Apps links neben Ihrem Spieleintrag in der Entwicklerkonsole. Wählen Android aus der Liste der verknüpften Apps.
Geben Sie Ihre App-Details ein, einschließlich des Paketnamens, den Sie bei der Erstellung ausgewählt haben.
Klicken Speichern und fortfahren oben und wählen Sie Autorisieren Sie jetzt Ihre App. Sie werden aufgefordert, Branding-Informationen einzugeben. Für den Moment benötigen Sie nur den Namen Ihrer App. In dem Client-ID-Einstellungen wählen Sie aus Installierte Anwendung als der Typ, Android als installierter Anwendungstyp und geben Sie Ihren Paketnamen ein.
Sie müssen dann einen Fingerabdruck eines Signaturzertifikats für die Autorisierung erstellen. Sie müssen dazu das Dienstprogramm keytool auf Ihrem Computer ausführen. Öffnen Sie ein Terminal oder eine Eingabeaufforderung und verwenden Sie den folgenden Befehl. Ändern Sie ihn bei Bedarf jedoch entsprechend dem Standort. Sie können das Debug-Zertifikat beim Testen verwenden.
keytool -exportcert -alias androiddebugkey -keystore ~ / .android / debug.keystore -list -v
Das Keytool sollte den Zertifikatfingerabdruck ausschreiben. Wählen und kopieren Sie, was danach erscheint SHA1 und fügen Sie es in die Entwicklerkonsole unter Signaturzertifikat Fingerabdruck. Klicken Client erstellen und kopieren Sie die Anwendungs-ID, die Sie in der Auflistung für Ihr Spiel in der Entwicklerkonsole sehen. Diese sollte neben dem Namen des Spiels oben auf der Seite angezeigt werden. Speichern Sie die Anwendungs-ID zur späteren Verwendung in Ihrer App.
Klicken Sie weiterhin in der Entwicklerkonsole auf die Schaltfläche Erfolge Klicken Sie auf die Schaltfläche links neben der Spieleliste und klicken Sie auf Leistung hinzufügen.
Bevor Sie fortfahren, sollten Sie die Seite mit den Erfolgen im Entwicklerhandbuch besuchen, um sicherzustellen, dass Sie das Konzept einer Errungenschaft in Google Play Games verstehen. Geben Sie einen Namen, eine Beschreibung und ein Symbol für Ihre Leistung ein und wählen Sie einen Bundesstaat, Punkte und Listenreihenfolge aus. Für unser Musterspiel verwenden wir Richtig erraten als der Name, Eine richtige Nummer ausgewählt als Beschreibung und ein einfaches Sternbild als Symbol. Klicken sparen um die Errungenschaft zu retten.
Kopieren Sie die Leistungs-ID, die neben der Leistung in der Entwicklerkonsole angezeigt wird.
Wenn Sie zum navigieren Testen Abschnitt für Ihr Spiel können Sie E-Mail-Adressen für Personen festlegen, die Testzugriff auf das Spiel haben. Standardmäßig fügt die Entwicklerkonsole Ihre eigene E-Mail-Adresse für Ihr Google-Konto ein, sodass Sie diese sofort verwenden können. Fügen Sie weitere Test-E-Mails hinzu, die Sie benötigen, um sich von Ihrem Google-Konto abzumelden.
In Eclipse können wir die App für den Zugriff auf Games Services bereitstellen. Wir werden die in Implementing Sign-in für Android beschriebene Technik verwenden, um die Anmeldung und Abmeldung von Benutzern in ihren Google-Konten zu bewältigen. Dazu müssen Sie sich mit Schaltflächen an- und abmelden. Fügen Sie diese wie folgt zum Layout Ihrer App hinzu:
Ändern Sie Ihre Hauptaktivität, um sie zu erweitern BaseGameActivity
. Dadurch können wir bestimmte Teile des Anmeldeprozesses für Ihre Benutzer automatisieren. Mach auch das Aktivität
Klicks für Klassengriffe:
public class MainActivity erweitert BaseGameActivity implementiert View.OnClickListener
Sie benötigen folgende Importe:
importiere com.google.android.gms.games.Games; import com.google.example.games.basegameutils.BaseGameActivity;
Rufen Sie jetzt die Verweise auf die Schaltflächen in ab onCreate
:
findViewById (R.id.sign_in_button) .setOnClickListener (this); findViewById (R.id.sign_out_button) .setOnClickListener (this);
Wir werden auf Tastendrucke reagieren onClick
wie du unten sehen kannst:
@Override public void onClick (Ansicht anzeigen) if (view.getId () == R.id.sign_in_button) beginUserInitiatedSignIn (); else if (view.getId () == R.id.sign_out_button) signOut (); findViewById (R.id.sign_in_button) .setVisibility (View.VISIBLE); findViewById (R.id.sign_out_button) .setVisibility (View.GONE);
Wir verwenden Methoden aus dem BaseGameActivity
Klasse, die wir für die Anmeldung erweitern (beginUserInitiatedSignIn
und Ausloggen
), Aktualisierung der Benutzeroberfläche entsprechend. Wenn die App gestartet wird, wird versucht, den Benutzer automatisch anzumelden. Sie können sich jedoch auch mithilfe der Schaltflächen an- und abmelden.
Wir müssen jetzt zwei Rückrufe hinzufügen Aktivität
Klasse:
public void onSignInSucceeded () findViewById (R.id.sign_in_button) .setVisibility (View.GONE); findViewById (R.id.sign_out_button) .setVisibility (View.VISIBLE); @Override public void onSignInFailed () findViewById (R.id.sign_in_button) .setVisibility (View.VISIBLE); findViewById (R.id.sign_out_button) .setVisibility (View.GONE);
Sie können ggf. weiteren Code hinzufügen. Sie können auch den Fortschritt des Spielers speichern, auch wenn diese nicht angemeldet sind. Dies hängt jedoch von Ihrem Spiel ab. In der Beispielanwendung überprüfen wir auf einfache Weise, ob eine Verbindung zu Google Services besteht, bevor wir versuchen, mit der Leistung zu arbeiten.
Bevor Sie anfangen, die Details der Verwendung von Erfolgen in Ihrer App zu codieren, müssen Sie einige Daten hinzufügen. Beginnen Sie mit dem Öffnen oder Erstellen Ihres res / values / ids.xml Datei- und Zeichenkettenressourcen für die App und Leistungs-IDs, die Sie aus der Entwicklerkonsole kopiert haben:
abcdefghij abcdefghijkl
Aktualisieren Sie den Inhalt entsprechend Ihren ID-Werten. Öffnen Sie nun das Projekt Manifest und fügen Sie im Anwendungselement Folgendes hinzu:
Wir verweisen auf die App-ID, die wir der IDs-Datei und der Play Services-Version hinzugefügt haben. Dies ist alles, was Sie brauchen, um mit Ihrer Leistung zu programmieren.
Jetzt müssen Sie nur noch die Errungenschaft freischalten, wenn der Spieler die Anforderungen der Errungenschaft erfüllt. Natürlich hängt dies vom Zweck Ihres eigenen Spiels ab. Wenn Sie den Vorgang jedoch mit der Beispiel-App dieses Tutorials durchführen möchten, können Sie den folgenden Code verwenden. Wir beginnen mit dem Hauptlayout, das die zuvor hinzugefügten Schaltflächen zum Anmelden und Abmelden enthält:
Beachten Sie, dass wir auch eine Erfolge Schaltfläche neben den Schaltflächen zum Anmelden und Abmelden. Wir werden diese Schaltfläche später implementieren. Wir werden nicht zu sehr auf das Beispielspiel eingehen, wenn Sie bereits einfache Apps abgeschlossen haben, sollte dies nicht zu schwierig sein.
Das Spiel wählt eine Zufallszahl zwischen 0 und 9, und der Spieler kann eine Zahlentaste wählen, um eine Vermutung zu treffen. Das Spiel aktualisiert das Textfeld, um anzuzeigen, ob der Benutzer richtig geraten hat oder nicht. Wenn eine korrekte Vermutung gemacht wird, ist der Erfolg freigeschaltet.
Wechseln Sie wieder zu Ihrem Aktivität
Klasse und fügen Sie die folgenden Instanzvariablen hinzu:
private Schaltfläche button0, button1, button2, button3, button4, button5, button6, button7, button8, button9, buttonAgain; private int number; private Random Rand; private TextView-Informationen;
Diese repräsentieren die Schaltflächen, die Anzahl, den Zufallszahlengenerator und das Textfeld. Fügen Sie Folgendes zu Ihrem hinzu onCreate
Methode:
findViewById (R.id.show_achievements) .setOnClickListener (this); button0 = (Button) findViewById (R.id.btn0); button1 = (Button) findViewById (R.id.btn1); button2 = (Button) findViewById (R.id.btn2); button3 = (Button) findViewById (R.id.btn3); button4 = (Button) findViewById (R.id.btn4); button5 = (Button) findViewById (R.id.btn5); button6 = (Button) findViewById (R.id.btn6); button7 = (Button) findViewById (R.id.btn7); button8 = (Button) findViewById (R.id.btn8); button9 = (Button) findViewById (R.id.btn9); buttonAgain = (Button) findViewById (R.id.btnAgain); info = (TextView) findViewById (R.id.guess_text); rand = new Random (); number = rand.nextInt (10);
Fügen Sie nun eine Methode mit dem Namen hinzu disableNumbers
, welches wir anrufen, wenn der Benutzer eine Nummernauswahl vornimmt:
private void disableNumbers () button0.setEnabled (false); button0.setTextColor (Color.parseColor ("# ff000033")); button1.setEnabled (false); button1.setTextColor (Color.parseColor ("# ff000033")); button2.setEnabled (false); button2.setTextColor (Color.parseColor ("# ff000033")); button3.setEnabled (false); button3.setTextColor (Color.parseColor ("# ff000033")); button4.setEnabled (false); button4.setTextColor (Color.parseColor ("# ff000033")); button5.setEnabled (false); button5.setTextColor (Color.parseColor ("# ff000033")); button6.setEnabled (false); button6.setTextColor (Color.parseColor ("# ff000033")); button7.setEnabled (false); button7.setTextColor (Color.parseColor ("# ff000033")); button8.setEnabled (false); button8.setTextColor (Color.parseColor ("# ff000033")); button9.setEnabled (false); button9.setTextColor (Color.parseColor ("# ff000033")); buttonAgain.setEnabled (true); buttonAgain.setTextColor (Color.parseColor ("# ff000033"));
Implementieren Sie eine andere Methode, enableNumbers
, welches aufgerufen wird, wenn der Benutzer sich für ein erneutes Spielen entschieden hat:
private void enableNumbers () button0.setEnabled (true); button0.setTextColor (Color.WHITE); button1.setEnabled (true); button1.setTextColor (Color.WHITE); button2.setEnabled (true); button2.setTextColor (Color.WHITE); button3.setEnabled (true); button3.setTextColor (Color.WHITE); button4.setEnabled (true); button4.setTextColor (Color.WHITE); button5.setEnabled (true); button5.setTextColor (Color.WHITE); button6.setEnabled (true); button6.setTextColor (Color.WHITE); button7.setEnabled (true); button7.setTextColor (Color.WHITE); button8.setEnabled (true); button8.setTextColor (Color.WHITE); button9.setEnabled (true); button9.setTextColor (Color.WHITE); buttonAgain.setEnabled (false); buttonAgain.setTextColor (Color.parseColor ("# ffffff00"));
Fügen Sie nun die Methode hinzu, die wir als festgelegt haben onClick
Attribut für die Schaltflächen:
public void btnPressed (Ansicht v) int btn = Integer.parseInt (v.getTag (). toString ()); if (btn<0) //again btn number=rand.nextInt(10); enableNumbers(); info.setText("Guess the number!"); else //number button if(btn==number) info.setText("Yes! It was "+number); if(getApiClient().isConnected()) Games.Achievements.unlock(getApiClient(), getString(R.string.correct_guess_achievement)); else info.setText("No! It was "+number); disableNumbers();
Wir nennen das Spiele Erfolge Dienstprogramm zum Entsperren der Errungenschaft, wenn die Vermutung des Benutzers richtig war, und zunächst überprüft, ob eine Verbindung besteht. Wir beziehen uns auf die Errungenschaft mit der von uns erstellten String-Ressource.
Zu guter Letzt dürfen wir dem Benutzer erlauben, seine Leistungen für das Spiel zu sehen. Dies geschieht, wenn sie auf klicken Erfolge Button, den wir hinzugefügt haben. Erweitern Sie den Code in der onClick
Methode, Hinzufügen einer zusätzlichen sonst wenn
:
else if (view.getId () == R.id.show_achievements) startActivityForResult (Games.Achievements.getAchievementsIntent (getApiClient ()), 1);
Wir nehmen das getAchievementsIntent
Methode mit einer beliebigen Ganzzahl, um die Benutzerleistungen im Spiel anzuzeigen. Durch Drücken der Zurück-Taste wird der Spieler zum Spiel zurückkehren. Weitere Informationen zu den Erreichungsmethoden finden Sie auf der Seite Erfolge in Android des Entwicklerhandbuchs.
Sie sollten jetzt in der Lage sein, Ihre App auszuführen. Wenn die App ausgeführt wird, startet sie die Benutzerautorisierung und den Anmeldeprozess und fordert den Benutzer auf, die erforderlichen Berechtigungen zu erteilen.
Nach der Anmeldung wird dem Benutzer eine Bestätigung angezeigt.
Der Benutzer kann sich jederzeit ab- und wieder anmelden. Wenn der Benutzer eine korrekte Zahl auswählt, ist der Erfolg freigeschaltet und wird oben auf dem Spielbildschirm angezeigt.
Der Player kann dann normal weiterfahren. Durch Klicken auf die Schaltfläche Erfolge werden ihre Erfolge angezeigt. Durch Antippen der Zurück-Taste wird der Spieler zum Spiel zurückkehren.
In diesem Tutorial haben wir ein praktisches Beispiel für die Verwendung von Errungenschaften in einer Android-Anwendung untersucht. Die von uns verwendete Beispiel-App ist einfach, aber für jedes Spiel, mit dem Sie arbeiten, gelten dieselben Prinzipien. Fügen Sie der Entwicklerkonsole einen weiteren Erfolg hinzu und implementieren Sie ihn in Ihrem Spiel, um sicherzustellen, dass Sie die Konzepte und Prozesse verstehen.