Ohjelmointi

Java-vinkki: Määritä RSS-syöte Android-sovelluksellesi

Käytä Java's SAXParser -sovellusta RSS-syötteen hakemiseen ja jäsentämiseen Androidille. Tämä Java-vinkki on kehittäjille, jotka ovat uusia Androidissa, ja sisältää ohjeet Android-kehitysympäristön määrittämiseen ja lyhyen sovelluksen opetusohjelman.

RSS-syöte on XML-muotoinen tiedosto, jota käytetään säännöllisesti päivitettävien jaettujen tietojen julkaisemiseen. RSS-syöte voidaan jäsentää (ts. Lukea ja alustaa) käyttämällä XML-jäsennintä. Java-yhteensopivia jäsentimiä, joita käytetään XML: n jäsentämiseen Androidissa, ovat:

  • android.content.res.XmlResourceParser on vedon jäsennin
  • Yksinkertainen sovellusliittymä XML: lle (SAX) löytyy org.xml.sax paketti
  • Android ROME Feed Reader on Googlen RSS-syötteenlukija Androidille
  • Android Feed Reader on toinen Google RSS / Atom -syötteenlukija Androidille
  • Android-rss on kevyt Android-kirjasto RSS 2.0 -syötteille

Tämä Java-vinkki on vaiheittainen esittely javax.xml.parsers.SAXParser jäsentää RSS-syöte XML-muodossa. SAXParser on vakiovalinta, koska se sisältyy Android-sovellusliittymiin Android SDK: ssa. Perustamme kehitysympäristön, luomme yksinkertaisen Android-sovelluksen ja syötteen esittelytarkoituksiin ja muotoilemme sitten syötteen Androidille SAXParserilla. Vaikka oletetaan, että Java-sovelluskehitys on jonkin verran perehtynyt, tämä vinkki soveltuu kehittäjille, jotka ovat uusia Java-mobiilikehityksessä.

Ympäristön asettaminen

Määritä tämän projektin kehitysympäristö seuraavasti:

  1. Asenna Eclipse IDE.
  2. Asenna Android-kehitystyökalujen (ADT) laajennus Eclipseä varten. ADT-laajennus Eclipse-sovellukseen tarjoaa joukon laajennuksia Android-sovellusten kehittämiseen Eclipse-sovelluksessa.
  3. Asenna Android 2.3 SDK -alusta. Android SDK tarjoaa työkaluja Android-sovellusten kehittämiseen.
  4. Luo Android-virtuaalilaite ja aseta Target-ympäristöksi Android 2.3.3. API-taso 10.

Android-projekti

Luomme esimerkin Android-projektista RSS-syötteen vastaanottamiseksi.

  1. Valitse Eclipse IDE -valikossa Tiedosto -> Uusi.
  2. Kohdassa Uusi valitse Android -> Android-projektija napsauta sitten Seuraava.
  3. Määritä Uusi Android-projekti -ikkunassa projektin nimi (RSSFeed).
  4. Valitse rakennuskohteeksi Android Platform 2.3 API 10.
  5. Määritä Ominaisuudet-sovelluksessa sovelluksen nimi (jälleen RSSFeed) ja paketin nimi (android.rss).
  6. Valitse valintaruutu: Luo toiminta ja määritä Toiminta luokka (RssFeed).
  7. Määritä SDK: n vähimmäisversioksi 10 ja napsauta Seuraava; tai, jos olet valinnut Platform 3.0 -sovellusliittymän 11, määritä SDK: n vähimmäisversioksi 11.

Huomaa, että toiminta (Vaihe 6) edustaa käyttäjän vuorovaikutusta. Luokan laajennus Toiminta luokka luo ikkunan käyttöliittymälle.

Tuloksena oleva Android-projekti koostuu seuraavista tiedostoista:

  1. Aktiviteettiluokka (RSS-syöte), joka ulottuu Toiminta.
  2. A res / layout / main.xml tiedosto, joka määrittää Android-käyttöliittymän komponenttien asettelun.
  3. An AndroidManifest.xml tiedosto, joka sisältää sovelluksen kokoonpanon, kuten paketin nimen, tärkeimmän toiminnan, joka käynnistetään Android-sovelluksen käynnistyessä, sovelluksen komponentit, prosessit, käyttöoikeudet ja API: n vähimmäistason.

Sisään res / layout / main.xml, määritä Android-käyttöliittymän komponenttien asettelu. Luo Lineaarinen asettelu ja aseta android: suunta kuten "pystysuora"Tavoitteenamme on näyttää RSS - syöte tekstiviestinä, joten lisää a Tekstinäkymä RSS-syötteen otsikon elementti ja määritä android: teksti Google RSS -syötteenä. Lisää Tekstinäkymä elementti, tunnuksella "rss"näyttääksesi RSS-syötteen. Luettelossa 1 näkyy tuloksena oleva main.xml.

Luettelo 1. Android-käyttöliittymän komponenttien asettelun määrittäminen

Sisään AndroidManifest.xml, määritä Toiminta käynnistää nimellä RSS-syöte. Jotta voisimme käyttää RSS-syötettä verkosta Android-laitteella, meidän on otettava käyttöön android.permission.INTERNET lupa sisään AndroidManifest.xml, jonka avulla sovellukset voivat avata verkkopistokkeita. Lisää seuraava käyttöoikeus elementti:

Määritä vähintään Android-versio uses-sdk elementti. RSS-syöte toiminta aikomussuodatinja toiminta määritetään aktiviteetti- ja alielementeillä, kuten luettelossa 2 on esitetty.

Listaus 2. AndroidManifest.xml

Jäsennä Androidin RSS-syöte

Seuraavaksi käytämme javax.xml.parsers.SAXParser jäsentää RSS-syötteemme. Aloita tuomalla seuraavat luokat:

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

Muistakaa, että RSS-syöte luokka jatkuu Toiminta. vuonna RSS-syöte luokka, määritä muuttuja RSS-syötteen tuottamiseksi:

Merkkijono rssResult = "";

onCreate (Bundle savedInstanceState) -menetelmää käytetään, kun aktiviteetti aloitetaan. vuonna onCreate , aseta käyttöliittymä setContentView menetelmä ja asetteluresurssi:

setContentView (R.layout.main);

Seuraavaksi käytämme findViewById menetelmä määrittää Android-widget Tekstinäkymä objekti main.xml-tiedostossa:

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

Käytä nyt konstruktoria URL määrittääksesi RSS-syötteen URL-osoitteen:

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

Huomaa, että RSS-syöte koostuu syötekohteiden elementit. Jokainen koostuu otsikko, kuvaus, linkki, luojaja Päivämäärä alielementit.

Luo SAXParser

Luo SAXParserFactory staattisella menetelmällä newInstance:

SAXParserFactory-tehdas = SAXParserFactory.newInstance ();

Luo SAXParser käyttämällä uusiSAXParser menetelmä:

SAXParser saxParser = tehdas.uusiSAXParser ();

Hanki XMLReader alkaen SAXParser käyttämällä getXMLReader menetelmä:

XMLReader xmlReader = saxParser.getXMLReader ();

SAX2-tapahtumien käsittely

Seuraavaksi meidän on luotava Oletuskäsittelijä käsitellä SAX2-tapahtumia. SAX2-tapahtumat ovat XML-jäsentäviä tapahtumia, kuten asiakirjan / elementin alku ja loppu sekä merkkitiedot. Varten Oletuskäsittelijä, luo ensin yksityinen luokka RSSKäsittelijä joka laajentaa Oletuskäsittelijä luokassa. Määritä tapahtumankäsittelymenetelmien toteutus startElement ja merkkiä. Jokainen syötekohde sisältyy elementti. vuonna startElement menetelmä, jos localName on "kohde" lisätä localName että rssTulosmerkkijono:

rssResult = rssResult + localName + ":";

vuonna merkkiä -menetelmällä, lisää merkkitiedot rssTulosmerkkijono. Käytä korvaa kaikki tapa poistaa kaikki ylimääräiset välilyönnit RSS-syötteestä:

Merkkijonodata = uusi merkkijono (ch, alku, pituus); if (item == true) rssResult = rssResult + (cdata.trim ()). korvaaAll ("\ s +", "") + "\ t";

vuonna onCreate -menetelmällä, luo RSSKäsittelijä esine:

RSSHandler rssHandler = uusi RSSHandler ();

Aseta RSSKäsittelijä sisällönkäsittelijänä XMLReader objektin avulla setContentHandler menetelmä:

xmlReader.setContentHandler (rssHandler);

Luo InputSource RSS-syötteen URL-osoitteesta. Avaa URL-virta käyttämällä openStream menetelmä:

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

Jäsennä InputSource käyttämällä jäsentää menetelmä XMLReader esine:

xmlReader.parse (inputSource);

Aseta rssTulosmerkkijono luodaan RSS-syötteestä Tekstinäkymä elementti:

rss.setText (rssResult);

Ja sen kanssa olemme valmiit. Täydellinen Toiminta luokassa RSS-syöte näkyy luettelossa 3.

Listaus 3. RSSFeed

paketti android.rss; tuoda android.app.Activity; tuonti android.os.Bundle; tuo java.util.Stack; tuo android.widget.TextView; tuo javax.xml.parsers.SAXParser; tuo javax.xml.parsers.SAXParserFactory; tuo java.util.StringTokenizer; tuo java.net.MalformedURLException; tuo java.net.URL; tuo org.xml.sax.InputSource; tuo org.xml.sax.XMLReader; tuo java.io.IOException; tuo org.xml.sax.SAXException; tuo javax.xml.parsers.ParserConfigurationException; tuo org.xml.sax.Attributes; tuo org.xml.sax.SAXException; tuo org.xml.sax.helpers.DefaultHandler; julkinen luokka RSSFeed laajentaa toimintaa {/ ** Soitetaan, kun toiminto luodaan ensimmäisen kerran. * / Merkkijono rssResult = ""; totuusarvo = väärä; @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); TextView rss = (TextView) findViewById (R.id.rss); kokeile {URL rssUrl = uusi URL ("// www.javaworld.com/index.xml"); SAXParserFactory-tehdas = SAXParserFactory.newInstance (); SAXParser saxParser = tehdas.uusiSAXParser (); XMLReader xmlReader = saxParser.getXMLReader (); RSSHandler rssHandler = uusi RSSHandler (); xmlReader.setContentHandler (rssHandler); InputSource inputSource = uusi 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); } / ** public String removeSpaces (String s) {StringTokenizer st = new StringTokenizer (s, "", false); Merkkijono; while (st.hasMoreElements ()) t + = st.nextElement (); paluu t; } * / yksityisluokka RSSHandler laajentaa DefaultHandler {public void startElement (String uri, String localName, String qName, Attributes attrs) heittää 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) heittää SAXException {} public void -merkit (char [] ch, int start, int length) heittää SAXException {String cdata = uusi merkkijono (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). korvaaAll ("\ s +", "") + "\ t"; }}}

Suorita Android-sovellus

Katsotaan nyt, mitä tapahtuu, kun suoritamme Android-sovelluksen. Napsauta ensin hiiren kakkospainikkeella RSSFeed-sovellusta Eclipse IDE -laitteessasi ja valitse Suorita nimellä -> Android-sovellus.

Tulokset vaihtelevat hieman kokoonpanon mukaan: Jos olet määrittänyt Android Platform 11: n ja API 3.0: n, Platform 11 AVD käynnistyy. Jos olet valinnut Android-alustan 10 ja API 2.3, alustan 10 AVD käynnistyy. Kummassakin tapauksessa RSSFeed-sovelluksen tulisi näkyä asennettuna oikealle Android-laitteelle.

Napsauta nyt RSSFeed-sovellusta saadaksesi näkyviin RSS-syötteen, jonka pitäisi näkyä kuvan 1 mukaisesti.

Tiivistettynä

Tässä Java-vinkissä opit RSS-syötteen määrittämisen Androidille SAXParser, joka toimitetaan Android SDK: n mukana. Voit muokata tätä sovellusta mille tahansa RSS-syötteelle muuttamalla RSS-URL-osoitetta. Teimme myös yksinkertaisen harjoituksen RSS-syötteen muotoilussa poistamalla ylimääräiset välit lueteltujen artikkeleiden väliltä.

Deepak Vohra on Sun-sertifioitu Java-ohjelmoija, Sun-sertifioitu verkkokomponenttikehittäjä, ja on aiemmin julkaissut artikkeleita XML Journalissa, Java Developer Journalissa, WebLogic Journalissa ja Java.netissä.

Lisätietoja tästä aiheesta

Lisätietoja Androidista.

  • Lataa Android SDK.
  • Lataa Android-kehitystyökalut (ADT).
  • Lataa JDK
  • Lataa uusin Eclipse for Java EE -versio.

Lisää JavaWorldista

  • Katso lisää tämänkaltaisia ​​artikkeleita JavaWorldin Mobile Java -tutkimusalueelta.
  • Katso JavaWorld-sivustokartasta täydellinen luettelo tutkimuskeskuksista, jotka keskittyvät asiakaspuolen, yrityksen ja ydin Java-kehitystyökaluihin ja -aiheisiin.
  • JavaWorldin Java Technology Insider on podcast-sarja, jonka avulla voit oppia Java-tekniikan asiantuntijoilta matkalla töihin.

Tämän tarinan "Java-vinkki: Määritä RSS-syöte Android-sovelluksellesi" julkaisi alun perin JavaWorld.