Costruisci un'applicazione di ricerca su Twitter Impostazione del progetto

Questa serie di tutorial in due parti ti introdurrà ai fondamenti di lavorare con i servizi web RESTful utilizzando l'SDK di Android. Lungo la strada, imparerai come eseguire ricerche contro l'API pubblica di Twitter!

Inutile dire che l'accesso a Internet è una delle risorse principali che è possibile sfruttare nei dispositivi Android. Molti siti e social network popolari utilizzano i servizi Web per fornire l'accesso ai propri dati, spesso utilizzando modelli architettonici come REST (Representational State Transfer). Twitter è uno di questi servizi, con varie API per accedere a tweet e timeline. In questa serie in due parti utilizzeremo l'API di ricerca di Twitter per recuperare i tweet recenti su un termine di ricerca scelto dall'utente.

In questa prima parte acquisiremo l'input dell'utente e creeremo l'URL da utilizzare in una richiesta HTTP per l'URL di ricerca di Twitter per i tweet sul termine di input. Nella seconda parte recupereremo i risultati, che saranno formattati in JSON. Analizzeremo il feed tweet restituito da JSON e lo mostreremo in una semplice interfaccia visiva.

Questa serie di tutorial su Android Twitter Search si divide in due parti:

  • Parte 1: crea la richiesta di ricerca
  • Parte 2: recupera e analizza il feed JSON di Twitter

Passaggio 1: crea un nuovo progetto e layout

Crea un nuovo progetto in Eclipse: scegli Archivio> Nuovo> Progetto, quindi seleziona Progetto applicazione Android e fai clic su Avanti. Inserisci i nomi dell'applicazione, del progetto e del pacchetto scelti. Puoi lasciare il minimo predefinito e i livelli API di destinazione selezionati. Seleziona le opzioni di configurazione scelte. Nella schermata Crea attività, selezionare Attività vuota. Nella schermata successiva, inserisci "TwitterSearchActivity" come nome dell'attività e lascia che Eclipse generi il file di layout per te ("activity_twitter_search" per impostazione predefinita).

Facendo clic su Fine, Eclipse dovrebbe aprire il nuovo file di layout.

Apri il file Manifest per il tuo nuovo progetto e seleziona la scheda "AndroidManifest.xml" per modificare il codice. Aggiungi il seguente elemento ovunque all'interno dell'elemento Manifest ma all'esterno di tutti gli altri elementi:

 

Questo è necessario per qualsiasi app che accede alle risorse Internet.


Passaggio 2: crea l'interfaccia utente

Costruiamo ora gli elementi dell'interfaccia utente. Apri nuovamente il file di layout dell'attività principale e seleziona la scheda XML per modificare direttamente il codice. A seconda della configurazione di Eclipse, dovresti avere qualcosa di simile al seguente schema:

   

Se hai qualcosa di diverso nel tuo file di layout, sostituiscilo con questo codice per cominciare.

Possiamo lasciare il Layout Relativo così com'è, ma sostituire la Vista Testo esistente con un'altra leggermente diversa:

 

L'ID è per disporre altri elementi relativi a questo. Le altre proprietà sono per lo styling e il posizionamento semplici. Apri il file "res / values ​​/ strings.xml" e aggiungi la stringa di cui sopra:

 Inserisci il termine di ricerca di Twitter

Questo è solo un testo informativo. Di nuovo nel file di layout, dopo la vista di testo, aggiungi un testo di modifica per catturare il termine di ricerca dell'utente:

 

Posizioniamo l'elemento rispetto alla vista testo che abbiamo già aggiunto. La maggior parte degli altri attributi sono per lo styling; sentiti libero di modificarli come desideri. Aggiungi la stringa menzionata come suggerimento al tuo file "strings.xml":

 Termine di ricerca

Dopo la modifica del testo, aggiungi un pulsante per consentire all'utente di eseguire la ricerca:

 

Qui applichiamo nuovamente il posizionamento relativo e gli attributi di stile. Specifichiamo anche un metodo da eseguire quando l'utente fa clic sul pulsante utilizzando il al clic attributo - aggiungeremo questo metodo alla classe Attività in seguito. Aggiungi la stringa specificata al tuo file dei valori:

 Ricerca

Successivamente creeremo l'area in cui verranno visualizzati i tweet recuperati. Non sappiamo quanto sarà lunga questa sezione quando verrà visualizzata sullo schermo, quindi aggiungiamo una vista di scorrimento in modo che gli utenti possano accedervi tutti, dopo il pulsante:

  

All'interno della vista di scorrimento, aggiungi una vista di testo finale:

 

Useremo l'attributo ID per identificare questa vista testuale in Java quando mostriamo i tweet recuperati. Oltre alle proprietà del layout, specifichiamo anche che il testo dovrebbe bloccarsi, in modo che Android non lo scarti sulle modifiche di orientamento. Aggiungi la stringa finale al tuo file di valori delle stringhe:

 ---

Questo è il nostro layout completo. Ovviamente puoi modificare il layout, se preferisci, in questi tutorial ci stiamo concentrando sulla pratica del recupero del feed tweet sul Web. Ecco come apparirà l'app quando la eseguirai più tardi:


Passaggio 3: preparare la classe di attività

Apri la tua classe di attività principale. La riga di apertura della dichiarazione di classe dovrebbe apparire come segue:

 public class TwitterSearchActivity estende l'attività 

Eclipse dovrebbe anche aver aggiunto un valore predefinito onCreate metodo e opzionalmente anche un metodo di menu opzioni. Il tuo onCreate metodo dovrebbe impostare il file di layout principale su cui abbiamo lavorato come segue:

 setContentView (R.layout.activity_twitter_search);

Se uno qualsiasi degli elementi menzionati non è presente nel file di classe creato da Eclipse, fare riferimento alla cartella di download allegata a questo tutorial.

Aggiungi le seguenti istruzioni di importazione alla tua classe, sostituendo quelle che Eclipse ha già compilato:

 import java.io.BufferedReader; importare java.io.InputStream; import java.io.InputStreamReader; importare java.net.URLEncoder; importare org.apache.http.HttpEntity; import org.apache.http.HttpResponse; importare org.apache.http.StatusLine; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONObject; importa android.os.AsyncTask; importare android.os.Bundle; importare android.app.Activity; importare android.view.Menu; importa android.view.View; importare android.widget.EditText; import android.widget.TextView;

Come puoi vedere, abbiamo importazioni per la gestione delle richieste e delle risposte HTTP, per l'elaborazione dei dati in arrivo, per l'analisi dei dati JSON e per i componenti Android generali.

All'interno della dichiarazione della classe, aggiungi una variabile di istanza per tenere traccia della vista di testo che abbiamo creato per visualizzare i tweet recuperati:

 TextView privato tweetDisplay;

Dentro il tuo onCreate metodo, dopo il codice esistente, recupera un riferimento alla Vista Testo, memorizzandolo nella variabile:

 tweetDisplay = (TextView) findViewById (R.id.tweet_txt);

Ora possiamo fare riferimento a questo elemento dell'interfaccia utente in tutta la classe. Lo faremo quando visualizziamo il feed tweet recuperato e anche quando visualizziamo messaggi di errore per l'utente se qualcosa va storto.


Passaggio 4: fornire il metodo Click

Ricorda che nel file di layout, abbiamo aggiunto un al clic attributo al pulsante, specificando un metodo denominato "searchTwitter" - implementiamo tale metodo ora. Aggiungilo alla tua classe dopo i metodi esistenti:

 public void searchTwitter (Visualizza visualizzazione) 

Perché lo abbiamo elencato come un al clic attributo, il metodo riceverà un riferimento alla vista su cui è stato fatto clic. In realtà non abbiamo bisogno del pulsante su cui è stato fatto clic, quello che vogliamo è la vista Modifica testo. Recuperiamo il testo inserito dall'utente, memorizzandolo come una stringa:

 EditText searchTxt = (EditText) findViewById (R.id.search_edit); String searchTerm = searchTxt.getText (). ToString ();

Usiamo l'ID che abbiamo dato al testo di modifica nel file di layout per identificarlo. Ora, prima di procedere, controlliamo che l'utente abbia inserito un termine di ricerca per impedire l'elaborazione non necessaria:

 if (searchTerm.length ()> 0)  else tweetDisplay.setText ("Inserisci una query di ricerca!");

Se l'utente non ha inserito nulla, semplicemente inviamo un messaggio nel feed del tweet Text View a cui abbiamo un riferimento in tutta la classe.


Passaggio 5: preparare e codificare l'URL

L'elaborazione che stiamo per aggiungere successivamente può generare eccezioni, quindi aggiungi provare e catturare blocchi all'interno del Se dichiarazione nel metodo "searchTwitter":

 prova  catch (Exception e) tweetDisplay.setText ("Whoops - qualcosa è andato storto!"); e.printStackTrace (); 

Se viene lanciata un'eccezione, scriviamo semplicemente un messaggio di errore come abbiamo fatto quando l'utente non ha inserito un termine di ricerca.

Per utilizzare l'API di ricerca di Twitter, aggiungi il termine di ricerca a un URL di base per il servizio. Nel caso in cui l'utente inserisca caratteri come spazi, codificheremo il loro testo. Dentro il provare blocco, aggiungere il seguente:

 String encodedSearch = URLEncoder.encode (searchTerm, "UTF-8");

Ora creiamo l'URL dell'API di ricerca di Twitter. Questo è il formato generale:

 http://search.twitter.com/search.json?q=query

Il testo "query" dovrebbe essere sostituito dal testo che stai cercando. Per creare il testo utente in questo URL, aggiungi quanto segue:

 String searchURL = "http://search.twitter.com/search.json?q="+encodedSearch;

Puoi provare a scaricare il feed tweet JSON nel browser Web incollando l'URL nella barra degli indirizzi e utilizzando qualsiasi termine di ricerca desiderato alla fine, ad esempio:

 http://search.twitter.com/search.json?q=android

Il tuo browser dovrebbe visualizzare i risultati JSON, che non sono facili da leggere ma dovrebbero darti un'idea di cosa riceverà la tua applicazione all'esecuzione della query.


Conclusione

Ora siamo pronti per eseguire la ricerca su Twitter. Nel prossimo tutorial, creeremo una classe AsyncTask all'interno della principale classe di attività. Questa classe gestirà il recupero del feed tweet utilizzando gli oggetti di richiesta e risposta HTTP in un thread in background, quindi visualizzando i risultati nell'interfaccia utente. Utilizzeremo le librerie di elaborazione Java JSON per analizzare il feed del tweet e presentarlo all'interno del layout creato in precedenza.