Con Google Play Games Services, puoi sviluppare una serie di funzioni nelle tue app Android, tra cui classifiche, risultati, modalità di gioco multiplayer, archiviazione su cloud e accesso a Google+.
In questo tutorial lavoreremo attraverso i passi che devi compiere per aggiungere risultati ad un semplice gioco Android. Prepareremo l'ambiente di sviluppo per utilizzare i servizi di gioco di Google Play, definire un risultato nella Console per gli sviluppatori e implementare l'interazione di realizzazione nel gioco.
Per utilizzare gli strumenti dei servizi di giochi di Google Play, dobbiamo preparare il nostro IDE. Oltre a usare il Google Play Services libreria, di cui hai bisogno per tutti i servizi Google, utilizzeremo il BaseGameUtils risorsa, che contiene un numero di classi che sono particolarmente utili nello sviluppo di giochi.
Inizia creando una nuova app nel tuo IDE. Il codice di esempio di questo tutorial contiene un semplice gioco in cui l'utente deve indovinare un numero scelto a caso. Puoi utilizzare quel progetto per iniziare a sviluppare con i servizi di giochi di Google Play, se lo desideri. Crea un nuovo progetto Android e scegli nomi e impostazioni per esso.
Se non stai utilizzando l'app di esempio nel download, potresti voler implementare il tuo gameplay a questo punto, tenendo presente a cosa stai per utilizzare un risultato. Per l'app di esempio, assegneremo semplicemente un risultato quando l'utente sceglie una risposta corretta.
In questo passaggio, otteniamo l'IDE e il nostro progetto pronti per utilizzare Google Play Games Services e le utilità. Apri il tuo Android SDK Manager, che puoi trovare sotto Finestra menu in Eclipse. Scorri verso il basso finché non vedi il extra cartella, espanderla e selezionare Google Play Services e il Google Repository. Potrebbe anche essere necessario il Piattaforma API di Google se hai intenzione di provare sull'emulatore, selezionalo pure. Puoi trovare quest'ultimo nelle directory per le versioni recenti della piattaforma Android. Installa i pacchetti selezionati, accettando le licenze necessarie.
Abbiamo anche bisogno di includere un paio di risorse nello spazio di lavoro effettivo in modo che possiamo farvi riferimento nell'app, a partire da Google Play Services Library. Dovresti trovarlo su / Extras / google / google_play_services / libproject / google-play-services_lib / nella tua cartella SDK. Crea una copia della libreria e incollala in un'altra posizione sul tuo computer.
Torna in Eclipse, importa la libreria scegliendo Importa> Android> Importa il codice Android esistente nello spazio di lavoro dal File menu. Passare al percorso in cui è stata copiata la libreria, selezionare la libreria e importarla. La libreria dovrebbe apparire come un progetto in Eclipse Package Explorer e nell'area di lavoro.
Fare clic con il tasto destro del mouse sul progetto di libreria in Eclipse, selezionare Proprietà e vai alla sezione Android. Seleziona un obiettivo di generazione di API di Google e assicurati È la biblioteca è controllato La libreria dovrebbe ora essere pronta per fare riferimento nella tua app.
Diamo ora il BaseGameUtils risorsa nel tuo IDE pure. Scaricalo dal Giochi di esempio sezione del portale per sviluppatori di Google. Poiché il codice è ospitato su GitHub, puoi sfogliarlo e accedere alle sue guide su GitHub.
Importa la risorsa BaseGameUtils in Eclipse usando la stessa tecnica che hai usato per la libreria Play Services selezionando Importa> Android> Importa il codice Android esistente nello spazio di lavoro dal File menu. Fai clic con il pulsante destro del mouse sul progetto BaseGameUtils nel tuo Esplora pacchetti e assicurati È la biblioteca è controllato.
Ora possiamo fare riferimento sia alla Libreria dei servizi di Google Play sia alle risorse di BaseGameUtils nella nostra app.
Seleziona l'app di gioco in Eclipse Package Explorer, fai clic con il pulsante destro del mouse e scegli Proprietà come hai fatto per le risorse importate. Nel androide sezione, questa volta clic Inserisci nel Biblioteca la zona. Seleziona entrambi Google Play Services library e BaseGameUtils aggiungere come librerie al tuo progetto.
Questo è l'IDE impostato per lo sviluppo con i Servizi di gioco.
Per utilizzare i risultati nel tuo gioco, devi aggiungere il gioco al gioco Console per gli sviluppatori di Google Play. Accedere alla Console per gli sviluppatori, fare clic su Servizi di giochi pulsante a sinistra della console e scegliere Configura i servizi di gioco di Google Play se non li hai mai usati prima.
Fai clic per aggiungere un nuovo gioco, seleziona Non utilizzo ancora alcuna API di Google nel mio gioco, e scegli un nome e una categoria per il tuo gioco. Clic Continuaper andare al prossimo passo.
Nel Dettagli del gioco sezione, tutto quello che devi aggiungere per testare la tua app è il titolo del tuo gioco.
Clic App collegate a sinistra dell'elenco dei giochi nella Console per gli sviluppatori. Selezionare androide dall'elenco delle app collegate.
Inserisci i dettagli della tua app, incluso il nome del pacchetto che hai scelto al momento della creazione.
Clic Salva e continua in alto e scegli Autorizza ora la tua app. Ti verrà richiesto di inserire le informazioni di branding. Tutto quello che ti serve per il momento è il nome della tua app. Nel Impostazioni ID client schermo, selezionare Applicazione installata come il tipo, androide come il tipo di applicazione installato e inserire il nome del pacchetto.
È quindi necessario generare un'impronta digitale del certificato di firma per l'autorizzazione. Per eseguire questa operazione è necessario eseguire l'utilità keytool sul computer. Aprire un terminale o un prompt dei comandi e utilizzare il seguente comando, ma assicurarsi di modificarlo in base alla posizione, se necessario. È possibile utilizzare il certificato di debug durante il test.
keytool -exportcert -alias androiddebugkey -keystore ~ / .android / debug.keystore -list -v
Il keytool dovrebbe scrivere l'impronta digitale del certificato. Seleziona e copia ciò che appare dopo SHA1 e incollarlo nel Console per gli sviluppatori sotto Impronta digitale di firma. Clic Crea cliente e copia l'ID applicazione che vedi nell'elenco per il tuo gioco nella Console per gli sviluppatori, che dovrebbe essere visualizzato accanto al nome del gioco nella parte superiore della pagina. Salva l'ID dell'applicazione per utilizzarlo in seguito nella tua app.
Sempre nella Console per gli sviluppatori, fai clic su realizzazioni pulsante sulla sinistra dell'elenco del gioco e fare clic Aggiungi risultato.
Prima di continuare, ti consigliamo di consultare la pagina Obiettivi nella Guida per gli sviluppatori per assicurarti di comprendere il concetto di un risultato in Google Play Games. Inserisci un nome, una descrizione e un'icona per il tuo successo e scegli uno stato, i punti e l'ordine dell'elenco. Per il nostro gioco di esempio, usiamo Indovinato correttamente come il nome, Selezionato un numero corretto come descrizione, e una semplice immagine stellare come icona. Clic Salvare per salvare il risultato.
Copia l'ID conseguimento, che puoi vedere accanto all'obiettivo nella Console per gli sviluppatori.
Se navighi sul analisi sezione per il tuo gioco, puoi impostare indirizzi e-mail per le persone che avranno accesso di prova al gioco. Per impostazione predefinita, la Console per gli sviluppatori inserirà il tuo indirizzo email dell'account Google, quindi dovresti essere in grado di utilizzarlo immediatamente. Aggiungi altri messaggi di prova di cui hai bisogno, quindi puoi uscire dal tuo account Google.
In Eclipse, possiamo preparare l'app per accedere ai servizi di giochi. Utilizzeremo la tecnica descritta in Implementare l'accesso su Android per gestire gli utenti che hanno effettuato l'accesso e l'uscita dai loro account Google. Ciò comporterà l'utilizzo di pulsanti per accedere e uscire, quindi aggiungili al layout della tua app come segue:
Modifica la tua attività principale da estendere BaseGameActivity
. Questo ci consentirà di automatizzare alcune parti del processo di accesso per i tuoi utenti. Anche fare il Attività
clic sulla maniglia di classe:
public class MainActivity estende BaseGameActivity implementa View.OnClickListener
Avrai bisogno delle seguenti importazioni:
import com.google.android.gms.games.Games; import com.google.example.games.basegameutils.BaseGameActivity;
Ora recupera i riferimenti ai pulsanti in onCreate
:
findViewById (R.id.sign_in_button) .setOnClickListener (questo); findViewById (R.id.sign_out_button) .setOnClickListener (questo);
Risponderemo ai pulsanti in al clic
come puoi vedere qui sotto:
@Override public void onClick (Visualizza vista) 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);
Usiamo metodi dal BaseGameActivity
classe che stiamo estendendo per gestire l'accesso (beginUserInitiatedSignIn
e disconnessione
), aggiornando di conseguenza l'interfaccia utente. Quando l'app si avvia, tenterà automaticamente di accedere all'utente, ma sarà anche in grado di utilizzare i pulsanti per accedere e uscire.
Ora dobbiamo aggiungere due callback al nostro Attività
classe:
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);
Potresti aggiungere altro codice a questi se necessario. Puoi anche scegliere di salvare i progressi del giocatore anche se non sono registrati, ma questo dipende dal tuo gioco. Nell'applicazione di esempio, adottiamo il semplice approccio di controllare che abbiamo una connessione ai servizi di Google prima di tentare di lavorare con il risultato.
Prima di iniziare a codificare i dettagli dell'utilizzo degli obiettivi nella tua app, devi aggiungere alcuni dati. Inizia aprendo o creando il tuo res / valori / ids.xml file e aggiungi risorse stringa per l'app e gli ID conseguimenti copiati dalla Console per gli sviluppatori:
ABCDEFGHIJ abcdefghijkl
Aggiorna il contenuto per riflettere i tuoi valori ID. Ora apri il progetto Manifesto e aggiungi quanto segue all'interno dell'elemento dell'applicazione:
Facciamo riferimento all'ID app che abbiamo aggiunto al file ids e alla versione Play Services. Questo è tutto ciò che serve per iniziare a programmare il tuo successo.
Tutto ciò che rimane ora è che tu sblocchi il risultato quando il giocatore soddisfa i requisiti del successo. Naturalmente questo dipenderà dallo scopo del tuo gioco, ma se vuoi eseguire il processo usando l'app di esempio di questo tutorial, puoi usare il seguente codice. Iniziamo con il layout principale, che include i pulsanti di accesso e disconnessione aggiunti in precedenza:
Si noti che includiamo anche un realizzazioni pulsante accanto ai pulsanti per l'accesso e l'uscita. Implementeremo quel pulsante più tardi. Non entreremo troppo nel dettaglio del gioco di esempio, se prima hai completato anche semplici app, questo non dovrebbe essere troppo difficile.
Il gioco seleziona un numero casuale compreso tra 0 e 9 e il giocatore può scegliere un pulsante numerico per indovinare. Il gioco aggiorna il campo di testo per riflettere se l'utente ha indovinato o meno. Se viene fatta un'ipotesi corretta, il risultato è sbloccato.
Ritorna al tuo Attività
classe e aggiungere le seguenti variabili di istanza:
private Pulsante button0, button1, button2, button3, button4, button5, button6, button7, button8, button9, buttonAgain; numero int privato; rand privato a caso; informazioni TextView private;
Questi rappresentano i pulsanti, il numero, il generatore di numeri casuali e il campo di testo. Aggiungi il seguente al tuo onCreate
metodo:
findViewById (R.id.show_achievements) .setOnClickListener (questo); 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);
Ora aggiungi un metodo chiamato disableNumbers
, che chiameremo quando l'utente effettua una selezione numerica:
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"));
Implementa un altro metodo, enableNumbers
, che viene invocato quando l'utente ha scelto di giocare di nuovo:
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"));
Ora aggiungi il metodo che impostiamo come al clic
attributo per i pulsanti:
public void btnPressed (Visualizza 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();
Chiamiamo il Realizzazioni di giochi utilità per sbloccare il risultato se l'ipotesi dell'utente era corretta, prima di controllare che abbiamo una connessione. Ci riferiamo al risultato utilizzando la risorsa stringa che abbiamo creato.
Ultimo ma non meno importante, permettiamo all'utente di visualizzare i loro risultati per il gioco. Questo accadrà quando cliccano sul realizzazioni pulsante che abbiamo aggiunto. Estendi il codice nel al clic
metodo, aggiungendo un ulteriore altrimenti se
:
else if (view.getId () == R.id.show_achievements) startActivityForResult (Games.Achievements.getAchievementsIntent (getApiClient ()), 1);
Noi usiamo il getAchievementsIntent
metodo con un numero arbitrario per visualizzare i risultati degli utenti all'interno del gioco. Colpire il pulsante indietro riporta il giocatore al gioco. Per ulteriori informazioni sui metodi dei risultati, consultare la pagina Risultati nella pagina Android nella Guida per gli sviluppatori.
Dovresti essere in grado di eseguire la tua app a questo punto. Quando l'app viene eseguita, avvierà l'autorizzazione dell'utente e il processo di accesso, chiedendo all'utente di concedere le autorizzazioni necessarie.
Una volta effettuato l'accesso, l'utente vedrà una conferma.
L'utente può scegliere di uscire e tornare in qualsiasi momento. Quando l'utente seleziona un numero corretto, il risultato è sbloccato e viene visualizzato nella parte superiore della schermata di gioco.
Il giocatore può quindi continuare normalmente. Facendo clic sul pulsante Achievements verranno visualizzati i risultati raggiunti. Toccando il pulsante indietro, il giocatore tornerà in gioco.
In questo tutorial, abbiamo esplorato un esempio pratico di utilizzo dei risultati in un'applicazione Android. L'app di esempio che abbiamo utilizzato è semplice, ma gli stessi principi si applicano a qualsiasi gioco con cui stai lavorando. Prova ad aggiungere un altro risultato alla Console per gli sviluppatori e implementalo nel tuo gioco per assicurarti di comprendere i concetti e i processi.