Denne todelte opplæringsserien vil introdusere deg til grunnleggende for å jobbe med RESTful webtjenester ved hjelp av Android SDK. Underveis lærer du hvordan du utfører søk mot den offentlige Twitter-APIen!
Det sier seg selv at Internett-tilgang er en av de viktigste aktivaene du kan utnytte i Android-enheter. Mange populære nettsteder og sosiale nettverk bruker webtjenester for å gi tilgang til sine data, ofte ved hjelp av arkitektoniske modeller som REST (Representational State Transfer). Twitter er en slik tjeneste, med ulike APIer for tilgang til tweets og tidslinjer. I denne todelte serien bruker vi Twitter Search API for å hente siste tweets på et søkeord valgt av brukeren.
I denne første delen vil vi fange brukerinngangen og bygge URL-adressen som skal brukes i en HTTP-forespørsel til Twitter-søkeadressen for tweets på inntidsperioden. I den andre delen vil vi hente resultatene, som vil bli formatert i JSON. Vi vil analysere den returnerte JSON tweet-feeden og vise den i et enkelt visuelt grensesnitt.
Denne opplæringsserien på Android Twitter Search er i to deler:
Opprett et nytt prosjekt i Eclipse: Velg Arkiv> Nytt> Prosjekt, og velg deretter Android Application Project og klikk Next. Skriv inn ditt valgte program, prosjekt og pakke navn. Du kan la standardminimum- og målgrensesnittet for APIer valgt. Velg de valgte konfigurasjonsalternativene. På skjermbildet Opprett aktivitet velger du Tom aktivitet. I neste skjermbilde skriver du inn «TwitterSearchActivity» som aktivitetsnavnet og la Eclipse generere layoutfilen for deg ("activity_twitter_search" som standard).
Når du klikker på Fullfør, bør Eclipse åpne den nye layoutfilen din.
Åpne Manifest-filen for ditt nye prosjekt og velg fanen "AndroidManifest.xml" for å redigere koden. Legg til følgende element hvor som helst innenfor det Manifest-elementet, men utenfor alle andre elementer:
Dette er nødvendig for alle apper som får tilgang til Internett-ressurser.
La oss nå bygge brukergrensesnittelementene. Åpne hovedaktivitetsoppsettfilen din igjen, og velg XML-fanen for å redigere koden direkte. Avhengig av ditt Eclipse-oppsett, bør du ha noe som følgende oversikt:
Hvis du har noe annerledes i layoutfilen din, skal du erstatte den med denne koden til å begynne med.
Vi kan etterlate den relative utformingen slik den er, men erstatt eksisterende tekstvisning med en annen litt annen:
ID-en er for å legge ut andre elementer i forhold til denne. De andre egenskapene er for enkel styling og posisjonering. Åpne filen "res / values / strings.xml" og legg til strengen vi har henvist til ovenfor:
Skriv inn Twitter-søkeordet ditt
Dette er bare en informativ tekst. Tilbake i layoutfilen din, etter tekstvisning, legg til en rediger tekst for å fange brukeresøkebegrepet:
Vi plasserer elementet i forhold til tekstvisningen vi allerede har lagt til. De fleste andre attributter er for styling; gjerne endre dem som du ønsker. Legg til strengen som er omtalt som en hint til filen "strings.xml":
Søkeord
Etter Rediger tekst legger du til en knapp for brukeren å utføre søket:
Her bruker vi relativ posisjonering og styling attributter igjen. Vi spesifiserer også en metode som skal utføres når brukeren klikker på knappen ved hjelp av ved trykk attributt - vi legger denne metoden til Aktivitetsklasse senere. Legg til den angitte strengen i verdiene filen din:
Søke
Neste vil vi opprette området der hentede tweets vil bli vist. Vi vet ikke hvor lenge denne delen vil være når den vises på skjermen, så la oss legge til en rullevisning slik at brukerne vil kunne få tilgang til alt - etter knappen:
På innsiden av rullevisningen legger du til en endelig tekstvisning:
Vi vil bruke ID-attributtet til å identifisere denne tekstvisningen i Java når vi viser de hentede tweets. Bortsett fra layoutegenskaper, spesifiserer vi også at teksten skal fryse, slik at Android ikke kaster det bort ved orienteringsendringer. Legg til den endelige strengen i filene dine strenger verdier:
---
Det er vårt oppsett komplett. Du kan selvfølgelig endre oppsettet hvis du vil, i disse veiledningene fokuserer vi på øvelsen for å hente tweet-strømmen over nettet. Slik vises appen når du kjører den senere:
Åpne din hovedaktivitetsklasse. Åpningslinjen til klassedeklarasjonen din skal vises som følger:
offentlig klasse TwitterSearchActivity utvider Aktivitet
Eclipse burde også ha lagt til en standard onCreate metode og eventuelt også en valgmeny metode. Din onCreate Metode skal sette hovedoppsettfilen vi jobbet på som følger:
setContentView (R.layout.activity_twitter_search);
Hvis noen av de nevnte elementene ikke er tilstede i din klassefil som opprettet av Eclipse, vennligst se nedlastingsmappen som er vedlagt denne opplæringen.
Legg til følgende importerklæringer i klassen din, og erstatt alt som Eclipse allerede har fylt ut:
importer java.io.BufferedReader; importer java.io.InputStream; importer java.io.InputStreamReader; importer java.net.URLEncoder; importer org.apache.http.HttpEntity; importer org.apache.http.HttpResponse; importer org.apache.http.StatusLine; importer org.apache.http.client.HttpClient; importer org.apache.http.client.methods.HttpGet; importer org.apache.http.impl.client.DefaultHttpClient; importer org.json.JSONArray; importer org.json.JSONObject; importer android.os.AsyncTask; importere android.os.Bundle; importer android.app.Activity; importer android.view.Menu; importer android.view.View; importer android.widget.EditText; importer android.widget.TextView;
Som du ser, har vi import for HTTP-forespørsel og responshåndtering, for behandling av innkommende data, for analyse av JSON-data og for generelle Android-komponenter.
I klassedeklarasjonen din legger du til en instansvariabel for å holde oversikt over tekstvisningen vi opprettet for å vise de hentede tweets:
privat TextView tweetDisplay;
Inne i din onCreate metode, etter den eksisterende koden, hente en referanse til tekstvisningen, lagre den i variabelen:
tweetDisplay = (TextView) findViewById (R.id.tweet_txt);
Nå kan vi se dette brukergrensesnittet i hele klassen. Vi gjør det når vi viser den hentede tweet-feeden, og også når vi viser feilmeldinger for brukeren hvis noe går galt.
Husk at i layoutfilen la vi til en ved trykk Tilordne knappen, og spesifiser en metode som heter "searchTwitter" - la oss implementere denne metoden nå. Legg det til i klassen din etter de eksisterende metodene:
offentlig tomrom searchTwitter (Vis visning)
Fordi vi oppførte det som en ved trykk attributten, vil metoden få en referanse til visningen som ble klikket. Vi trenger ikke faktisk knappen som ble klikket, det vi ønsker er Rediger tekstvisning. La oss hente teksten som er oppgitt av brukeren, lagre den som en streng:
EditText searchTxt = (EditText) findViewById (R.id.search_edit); String searchTerm = searchTxt.getText (). ToString ();
Vi bruker IDen vi ga Rediger tekst i layoutfilen for å identifisere den. Nå, før vi fortsetter, la oss kontrollere at brukeren har angitt et søkeord for å forhindre unødvendig behandling:
hvis (searchTerm.length ()> 0) annet tweetDisplay.setText ("Skriv inn et søk!");
Hvis brukeren ikke har oppgitt noe, sender vi bare en melding i tweet-feed-tekstvisningen vi har en referanse til i hele klassen.
Behandlingen vi skal legge til neste kan kaste unntak, så legg til prøve og å fange blokkerer inne i hvis uttalelse i "searchTwitter" metoden:
prøv fange (Unntak e) tweetDisplay.setText ("Whoops - noe gikk galt!"); e.printStackTrace ();
Hvis en unntak kastes, skriver vi bare en feilmelding som vi gjorde da brukeren ikke skrev inn et søkeord.
For å bruke Twitter Search API, legger du til søkeordet til en basisadresse for tjenesten. Hvis brukeren skriver inn tegn som mellomrom, vil vi kode inn teksten. Inne i prøve blokkere, legg til følgende:
String encodedSearch = URLEncoder.encode (searchTerm, "UTF-8");
La oss nå bygge webadressen for Twitter Search API. Dette er det generelle formatet:
http://search.twitter.com/search.json?q=query
Teksten "spørring" bør erstattes av teksten du søker etter. Hvis du vil bygge brukerteksten til denne nettadressen, legger du til følgende:
String searchURL = "http://search.twitter.com/search.json?q="+encodedSearch;
Du kan prøve å hente JSON-tweet-strømmen i nettleseren din ved å lim inn nettadressen i adressefeltet og bruke hvilket som helst søkeord du vil ha på slutten, for eksempel:
http://search.twitter.com/search.json?q=android
Nettleseren din skal vise JSON-resultatene, som ikke er enkle å lese, men skal gi deg en ide om hva søknaden din vil motta når du utfører spørringen.
Vi er nå klare til å utføre vårt Twitter-søk. I neste opplæring vil vi opprette en AsyncTask-klasse i hovedaktivitetsklassen. Denne klassen håndterer henting av tweet-feeden ved hjelp av HTTP-forespørsler og responsobjekter i en bakgrunnstråd, og deretter viser resultatene i brukergrensesnittet. Vi vil bruke Java JSON-behandlingsbibliotekene til å analysere tweet-strømmen og presentere den i oppsettet vi opprettet ovenfor.