Această serie de instrucțiuni din două părți vă va prezenta principiile de lucru cu serviciile web RESTful utilizând SDK-ul Android. Pe parcurs, veți învăța cum să efectuați căutări în raport cu API-ul Twitter public!
Este de la sine înțeles că accesul la Internet este unul dintre principalele active pe care le puteți exploata pe dispozitive Android. Multe site-uri populare și rețele sociale utilizează servicii Web pentru a oferi acces la datele lor, adesea utilizând modele arhitecturale, cum ar fi REST (Reprezentational State Transfer). Twitter este un astfel de serviciu, cu diverse API-uri pentru accesarea tweets și termenelor. În această serie din două părți vom folosi API-ul Căutare Twitter pentru a prelua tweet-urile recente pe un termen de căutare ales de utilizator.
În această primă parte vom surprinde datele introduse de utilizator și vom construi adresa URL pentru a le utiliza într-o cerere HTTP către adresa de căutare Twitter pentru tweet-uri pe termenul de intrare. În a doua parte vom prelua rezultatele, care vor fi formatate în JSON. Vom analiza fluxul de tweet returnat JSON și îl vom afișa într-o interfață vizuală simplă.
Această serie de tutoriale pe Android Twitter Search are două părți:
Creați un proiect nou în Eclipse: selectați Fișier> Nou> Proiect, apoi selectați Android Application Project și faceți clic pe Următorul. Introduceți numele aplicației, numele proiectului și numele pachetului. Puteți lăsa nivelurile prestabilite implicite ale minimului și ale destinațiilor API selectate. Selectați opțiunile de configurare alese. În ecranul Creare activitate, selectați Activitate neagră. În ecranul următor, introduceți "TwitterSearchActivity" ca nume de activitate și lăsați Eclipse să genereze fișierul de aspect pentru dvs. ("activity_twitter_search" implicit).
Când faceți clic pe Finalizare, Eclipse ar trebui să deschidă noul fișier de aspect.
Deschideți fișierul Manifest pentru noul dvs. proiect și selectați fila "AndroidManifest.xml" pentru a edita codul. Adăugați elementul următor oriunde în interiorul elementului Manifest, dar în afara tuturor celorlalte elemente:
Acest lucru este necesar pentru orice aplicație care accesează resursele de Internet.
Să construim elementele interfeței utilizator. Deschideți din nou fișierul principal de aspect al activității și selectați fila XML pentru a edita direct codul. În funcție de configurația Eclipse, trebuie să aveți ceva asemănător cu următoarea schiță:
Dacă aveți ceva diferit în fișierul de aspect, înlocuiți-l cu acest cod pentru a începe.
Putem lăsa aspectul relativ așa cum este, însă înlocuiți textul existent cu altul ușor diferit:
ID-ul este pentru a stabili alte elemente în raport cu acesta. Celelalte proprietăți sunt destinate stilului și poziționării simple. Deschideți fișierul "res / values / strings.xml" și adăugați șirul la care am făcut referire mai sus:
Introduceți termenul de căutare Twitter
Acesta este doar un text informativ. Înapoi în fișierul de aspect, după afișarea textului, adăugați un text de editare pentru a capta termenul de căutare al utilizatorului:
Poziționăm elementul în raport cu textul pe care l-am adăugat deja. Majoritatea celorlalte atribute sunt pentru stil; nu ezitați să le modificați după cum doriți. Adăugați șirul menționat ca sugestie pentru fișierul dvs. "strings.xml":
Termen de căutare
După Edit Text, adăugați un buton pentru ca utilizatorul să execute căutarea:
Aici aplicăm din nou atributele relative de poziționare și de styling. De asemenea, specificăm o metodă de executare atunci când utilizatorul face clic pe butonul folosind onClick atribut - vom adăuga mai târziu această metodă la clasa Activity. Adăugați șirul specificat în fișierul de valori:
Căutare
Apoi vom crea zona în care vor fi afișate tweeturile preluate. Nu stim cat de mult va fi aceasta sectiune atunci cand este afisata pe ecran, asa ca sa adaugam o Scroll View, astfel incat utilizatorii sa poata accesa totul - dupa buton:
În interiorul vizualizării Scroll, adăugați o vizualizare text finală:
Vom folosi atributul ID pentru a identifica această vizualizare text în Java atunci când afișăm tweeturile preluate. În afară de proprietățile layout-ului, specificăm și faptul că textul ar trebui să înghețe, astfel încât Android să nu se debaraseze pe schimbările de orientare. Adăugați șirul final în fișierul cu valori de șiruri:
---
Asta este planul nostru complet. Puteți schimba, desigur, aspectul dacă doriți, în aceste tutoriale ne concentrăm asupra practicii de preluare a fluxului tweet pe Web. Acesta este modul în care va apărea aplicația când o rulați mai târziu:
Deschideți clasa principală de activitate. Linia de deschidere a declarației de clasă trebuie să apară după cum urmează:
clasa publica TwitterSearchActivity se extinde Activitatea
Eclipse ar fi trebuit, de asemenea, să fi adăugat o valoare implicită onCreate și opțional și o metodă de meniu de opțiuni. Ta onCreate metoda ar trebui să stabilească fișierul principal de aspect pe care am lucrat după cum urmează:
setContentView (R.layout.activity_twitter_search);
Dacă vreunul dintre elementele menționate nu este prezent în fișierul de clasă așa cum a fost creat de Eclipse, vă rugăm să consultați dosarul de descărcare atașat la acest tutorial.
Adăugați următoarele clase de import în clasa dvs., înlocuindu-le pe cele pe care Eclipse le-a completat deja:
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URLEncoder; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import 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; import șiroid.os.AsyncTask; import android.os.Bundle; importă android.app.Activity; import șiroid.view.Menu; import șiroid.view.View; importă android.widget.EditText; import șiroid.widget.TextView;
După cum puteți vedea, avem importuri pentru manipularea cererilor și răspunsurilor HTTP, pentru prelucrarea datelor primite, pentru parsarea datelor JSON și pentru componentele Android generale.
În interiorul declarației de clasă, adăugați o variabilă de instanță pentru a ține evidența textului vizualizat pe care l-am creat pentru a afișa tweeturile preluate:
private TextView tweetDisplay;
În interiorul tău onCreate după codul existent, preluați o referință la Text View, stocându-l în variabila:
tweetDisplay = (TextView) findViewById (R.id.tweet_txt);
Acum ne putem referi la acest element de interfață utilizator în întreaga clasă. Vom face acest lucru atunci când afișăm fluxul tweet preluat și, de asemenea, atunci când afișăm mesaje de eroare pentru utilizator în cazul în care ceva nu merge bine.
Rețineți că în fișierul de aspect am adăugat un onClick atribut butonului, specificând o metodă numită "searchTwitter" - să implementăm această metodă acum. Adăugați-o la clasa dvs. după metodele existente:
public void searchTwitter (Vizualizare vedere)
Pentru că l-am enumerat ca pe un onClick atribut, metoda va primi o referință la vizualizarea pe care a fost făcut clic. De fapt, nu avem nevoie de Butonul pe care a fost făcut clic, ceea ce vrem este Edit Text View. Să preluăm textul introdus de utilizator, stocându-l ca șir:
EditText căutareTxt = (EditText) findViewById (R.id.search_edit); String căutareTerm = searchTxt.getText (). ToString ();
Utilizăm ID-ul pe care l-am dat textului Editare în fișierul de aspect pentru ao identifica. Acum, înainte de a continua, verificați dacă utilizatorul a introdus un termen de căutare pentru a împiedica orice procesare inutilă:
if (searchTerm.length ()> 0) altceva tweetDisplay.setText ("Introduceți o interogare de căutare!");
În cazul în care utilizatorul nu a introdus nimic, vom emite doar un mesaj în tweet feed Feed View avem o referință la întreaga clasă.
Procesarea pe care o vom adăuga în continuare poate arunca excepții, deci adăugați încerca și captură blochează în interiorul dacă declarație în metoda "searchTwitter":
încercați captura (Excepție e) tweetDisplay.setText ("Oameni - ceva nu a mers!"); e.printStackTrace ();
Dacă este aruncată o excepție, vom scrie un mesaj de eroare, așa cum am făcut-o atunci când utilizatorul nu a introdus un termen de căutare.
Pentru a utiliza API-ul Căutare Twitter, adăugați termenul dvs. de căutare la o adresă URL de bază a serviciului. În cazul în care utilizatorul introduce caractere precum spații, vom codifica textul acestora. În interiorul încerca bloc, adăugați următoarele:
String encodedSearch = URLEncoder.encode (căutațiTerm, "UTF-8");
Acum, să construim URL-ul API-ului de căutare Twitter. Acesta este formatul general:
http://search.twitter.com/search.json?q=query
Textul "interogare" ar trebui înlocuit cu textul pe care îl căutați. Pentru a construi textul utilizatorului în această adresă URL, adăugați următoarele:
Căutare căutatăURL = "http://search.twitter.com/search.json?q="+encodedSearch;
Puteți încerca să preluați feedul tweet JSON în browserul Web prin inserarea adresei URL în bara de adrese și utilizând orice termen de căutare dorit la sfârșit, de exemplu:
http://search.twitter.com/search.json?q=android
Browserul dvs. ar trebui să afișeze rezultatele JSON, care nu sunt ușor de citit, dar ar trebui să vă dau o idee despre ce va primi aplicația dvs. la executarea interogării.
Suntem acum gata să executăm căutarea Twitter. În următorul tutorial, vom crea o clasă AsyncTask în clasa principală de activitate. Această clasă se va ocupa de preluarea feed-ului tweet utilizând obiecte HTTP și obiecte de răspuns într-un fir de fundal, apoi afișarea rezultatelor în interfața de utilizare. Vom folosi bibliotecile de procesare Java JSON pentru a analiza feed-ul tweet-ului și a le prezenta în cadrul structurii create mai sus.