Programiranje

Nasvet Java: nastavite vir RSS za svojo aplikacijo Android

Uporabite Javin SAXParser za pridobivanje in razčlenitev vira RSS za Android. Ta namig za Java je namenjen razvijalcem, ki so novi za Android, in vključuje navodila za nastavitev razvojnega okolja za Android ter kratko vadnico aplikacije.

Vir RSS je datoteka v formatu XML, ki se uporablja za objavo redno posodobljenih sindiciranih informacij. Vir RSS je mogoče razčleniti (torej prebrati in formatirati) z uporabo razčlenjevalnika XML. Razčlenjevalniki, združljivi z Javo, ki se uporabljajo za razčlenitev XML v sistemu Android, vključujejo:

  • android.content.res.XmlResourceParser je razstavni parser
  • Preprost API za XML (SAX) najdete v org.xml.sax paket
  • Android ROME Feed Reader je Googlov bralnik virov RSS za Android
  • Android Feed Reader je še en Googlov bralnik virov RSS / Atom za Android
  • Android-rss je lahka knjižnica Android za vire RSS 2.0

Ta namig Java je korak za korakom uvod v uporabo javax.xml.parsers.SAXParser za razčlenitev vira RSS v obliki XML. SAXParser je standardna izbira, ker je vključen v API-je za Android v Android SDK. Vzpostavili bomo razvojno okolje, ustvarili preprosto aplikacijo za Android in vir za predstavitvene namene ter nato s SAXParser formatirali vir za Android. Čeprav se domneva, da je razvoj aplikacij Java poznan, je ta nasvet primeren za razvijalce, ki so novi na področju mobilnega razvoja Java.

Nastavitev okolja

Za vzpostavitev razvojnega okolja za ta projekt izvedite naslednje korake:

  1. Namestite Eclipse IDE.
  2. Namestite vtičnik Android Development Tools (ADT) za Eclipse. Vtičnik ADT za Eclipse ponuja nabor razširitev za razvoj aplikacij za Android v programu Eclipse.
  3. Namestite platformo Android 2.3 SDK. Android SDK ponuja orodja za razvoj aplikacij za Android.
  4. Ustvarite navidezno napravo Android in ciljno okolje nastavite kot Android 2.3.3. API Level 10.

Projekt Android

Ustvarili bomo primer projekta Android za prejemanje vira RSS.

  1. V vašem Eclipse IDE izberite Datoteka -> Novo.
  2. V Novi izberite Android -> Android Project, nato kliknite Naprej.
  3. V oknu New Android Project določite ime projekta (RSSFeed).
  4. Za cilj izdelave izberite Android Platform 2.3 API 10.
  5. V lastnostih določite ime aplikacije (spet RSSFeed) in ime paketa (android.rss).
  6. Potrdite polje: Ustvari dejavnost in določite Dejavnost razred (RssFeed).
  7. Določite najmanjšo različico SDK kot 10 in kliknite Naprej; ali če ste izbrali API 11 Platform 3.0, določite najmanjšo različico SDK kot 11.

Upoštevajte, da je dejavnosti (6. korak) predstavlja interakcijo uporabnika. Razred, ki razširja Dejavnost razred ustvari okno za uporabniški vmesnik.

Nastali projekt Android bo sestavljen iz naslednjih datotek:

  1. Razred dejavnosti (RSSFeed), ki se razteza Dejavnost.
  2. A res / layout / main.xml datoteka, ki določa postavitev komponent uporabniškega vmesnika Android.
  3. An AndroidManifest.xml datoteka, ki vsebuje konfiguracijo aplikacije, na primer ime paketa, glavno dejavnost, ki se zažene ob zagonu aplikacije Android, komponente aplikacije, procese, dovoljenja in najmanjšo raven API-ja.

V res / layout / main.xml, določite postavitev komponent uporabniškega vmesnika Android. Ustvariti LinearLayout in nastavite android: usmerjenost kot "navpično"Naš cilj je prikazati vir RSS kot besedilno sporočilo, zato dodajte TextView element za naslov vira RSS in navedite android: besedilo kot Google RSS Feed. Dodajte a TextView element z id "rss"za prikaz vira RSS. Seznam 1 prikazuje nastali main.xml.

Seznam 1. Določitev postavitve komponent uporabniškega vmesnika Android

V AndroidManifest.xml, določite Dejavnost za zagon kot RSSFeed. Za dostop do vira RSS iz spleta v napravi Android moramo omogočiti android.permission.INTERNET dovoljenje v AndroidManifest.xml, ki aplikacijam omogoča odpiranje omrežnih vtičnic. Dodajte naslednje uporabnik-dovoljenje element:

Navedite najmanjšo različico Androida z uporablja-sdk element. The RSSFeed dejavnost, filter namere, in ukrepanje so podani z elementom dejavnosti in podelementi, kot je prikazano v seznamu 2.

Seznam 2. AndroidManifest.xml

Razčlenite vir RSS za Android

Nato bomo uporabili javax.xml.parsers.SAXParser za razčlenitev našega vira RSS. Začnite z uvozom naslednjih razredov:

  • javax.xml.parsers.SAXParser
  • javax.xml.parsers.SAXParserFactory
  • org.xml.sax.InputSource
  • org.xml.sax.XMLReader
  • org.xml.sax.helpers.DefaultHandler

Spomnimo se, da RSSFeed razred se razširi Dejavnost. V RSSFeed razred, določite spremenljivko za izhod vira RSS:

Niz rssResult = "";

The onCreate (Bundle savedInstanceState) metoda se sproži ob zagonu dejavnosti. V onCreate uporabniški vmesnik nastavite z setContentView metoda in vir postavitve:

setContentView (R.layout.main);

Nato uporabimo findViewById metoda za določanje pripomočka Android TextView objekt v main.xml:

TextView rss = (TextView) findViewById (R.id.rss);

Zdaj uporabite konstruktor za URL da določite URL vira RSS:

URL rssUrl = nov URL ("// www.javaworld.com/index.xml");

Upoštevajte, da je vir RSS sestavljen iz elementi za krmne postavke. Vsak sestoji iz naslov, opis, povezava, ustvarjalec, in datum podelementi.

Ustvari SAXParser

Ustvariti SAXParserFactory objekt s statično metodo newInstance:

SAXParserFactory factory = SAXParserFactory.newInstance ();

Ustvariti SAXParser uporabljati newSAXParser metoda:

SAXParser saxParser = factory.newSAXParser ();

Pridobite XMLReader Iz SAXParser uporabljati getXMLReader metoda:

XMLReader xmlReader = saxParser.getXMLReader ();

Obravnava dogodkov SAX2

Nato moramo ustvariti a DefaultHandler za obdelavo dogodkov SAX2. Dogodki SAX2 so dogodki razčlenjevanja XML, kot so začetek in konec dokumenta / elementa ter podatki o znakih. Za DefaultHandler, najprej ustvarite zasebni razred RSSHandler ki razširja DefaultHandler razred. Določite izvedbo za metode obdelave dogodkov startElement in znakov. Vsaka postavka vira je v datoteki element. V startElement metoda, če je localName je "element" dodajte localName do niz rssResult:

rssResult = rssResult + localName + ":";

V znakov , dodajte znakovne podatke v niz rssResult. Uporabi replaceAll metoda za odstranitev vseh odvečnih presledkov v viru RSS:

String cdata = nov niz (ch, začetek, dolžina); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t";

V onCreate , ustvarite RSSHandler objekt:

RSSHandler rssHandler = nov RSSHandler ();

Nastavite RSSHandler kot vodnik vsebine na XMLReader predmet z uporabo setContentHandler metoda:

xmlReader.setContentHandler (rssHandler);

Ustvari InputSource predmet iz URL-ja za vir RSS. Odprite tok URL s pomočjo openStream metoda:

InputSource inputSource = nov InputSource (rssUrl.openStream ());

Razčleni InputSource uporabljati razčleni metoda XMLReader objekt:

xmlReader.parse (inputSource);

Nastavite niz rssResult ustvarjen iz vira RSS na TextView element:

rss.setText (rssResult);

In s tem smo končali. Celoten Dejavnost razred RSSFeed je prikazano na seznamu 3.

Seznam 3. RSSFeed

paket android.rss; uvoz android.app.Activity; uvoz android.os.Bundle; uvoz java.util.Stack; uvoz android.widget.TextView; uvoz javax.xml.parsers.SAXParser; uvoz javax.xml.parsers.SAXParserFactory; uvoz java.util.StringTokenizer; uvoz java.net.MalformedURLException; uvoz java.net.URL; uvoz org.xml.sax.InputSource; uvoz org.xml.sax.XMLReader; import java.io.IOException; uvoz org.xml.sax.SAXException; uvoz javax.xml.parsers.ParserConfigurationException; uvoz org.xml.sax.Attributes; uvoz org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; javni razred RSSFeed razširja aktivnost {/ ** Pokliče se, ko je dejavnost prvič ustvarjena. * / Niz rssResult = ""; logična postavka = false; @Override javna praznina onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); TextView rss = (TextView) findViewById (R.id.rss); poskusite {URL rssUrl = nov URL ("// www.javaworld.com/index.xml"); SAXParserFactory factory = SAXParserFactory.newInstance (); SAXParser saxParser = factory.newSAXParser (); XMLReader xmlReader = saxParser.getXMLReader (); RSSHandler rssHandler = nov RSSHandler (); xmlReader.setContentHandler (rssHandler); InputSource inputSource = nov InputSource (rssUrl.openStream ()); xmlReader.parse (inputSource); } catch (IOException e) {rss.setText (e.getMessage ()); } catch (SAXException e) {rss.setText (e.getMessage ()); } catch (ParserConfigurationException e) {rss.setText (e.getMessage ()); } rss.setText (rssResult); } / ** javni niz removeSpaces (String s) {StringTokenizer st = nov StringTokenizer (s, "", false); Vrvica; while (st.hasMoreElements ()) t + = st.nextElement (); vrnitev t; } * / private class RSSHandler razširi DefaultHandler {public void startElement (String uri, String localName, String qName, Attributes attrs) vrže SAXException {if (localName.equals ("item")) item = true; if (! localName.equals ("item") && item == true) rssResult = rssResult + localName + ":"; } public void endElement (String namespaceURI, String localName, String qName) vrže SAXException {} javni void znaki (char [] ch, int start, int length) vrže SAXException {String cdata = new String (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t"; }}}

Zagon aplikacije Android

Zdaj pa poglejmo, kaj se zgodi, ko zaženemo aplikacijo Android. Najprej z desno miškino tipko kliknite aplikacijo RSSFeed v IDE Eclipse in izberite Zaženi kot -> Aplikacija Android.

Rezultati se bodo nekoliko razlikovali glede na konfiguracijo: če ste konfigurirali Android Platform 11 in API 3.0, se bo zagnala platforma 11 AVD. Če ste izbrali platformo Android 10 in API 2.3, se bo zagnal AVD platforme 10. Kakor koli že, aplikacija RSSFeed mora biti prikazana kot razporejena v ustrezni napravi Android.

Zdaj kliknite aplikacijo RSSFeed, da se prikaže vir RSS, ki naj bi se prikazal, kot je prikazano na sliki 1.

V zaključku

V tem nasvetu za Java ste se naučili, kako nastaviti RSS v Androidu z uporabo SAXParser, ki je priložen paketu SDK za Android. To aplikacijo lahko spremenite za kateri koli vir RSS s spreminjanjem URL-ja RSS. Naredili smo tudi preprosto vajo pri oblikovanju vira RSS, tako da smo odstranili odvečne presledke med navedenimi članki.

Deepak Vohra je programska oprema Java s certifikatom Sun, razvijalec spletnih komponent, ki je certificiran s strani Sun, in je že objavljal članke v XML Journal, Java Developer's Journal, WebLogic Journal in Java.net.

Preberite več o tej temi

Preberite več o Androidu.

  • Prenesite Android SDK.
  • Prenesite orodja za razvoj Android (ADT).
  • Prenesite JDK
  • Prenesite najnovejšo različico programa Eclipse za Java EE.

Več iz JavaWorlda

  • Za več podobnih člankov si oglejte raziskovalno območje Java Java Mobile Mobile.
  • Za celoten seznam raziskovalnih središč, osredotočenih na odjemalska, podjetniška in osnovna orodja in teme Java, si oglejte JavaWorld Site Map.
  • Java Technology Insider JavaWorld je serija podcastov, ki vam omogoča, da se na poti na delo učite od strokovnjakov za tehnologijo Java.

To zgodbo, "Nasvet Java: nastavite vir RSS za svojo aplikacijo za Android", je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found