Programovanie

Tip pre Java: Nastavte pre svoju aplikáciu pre Android kanál RSS

Použite program Java SAXParser na načítanie a analýzu informačného kanála RSS pre Android. Tento tip v jazyku Java je určený pre vývojárov, ktorí v Androide začínajú, a obsahuje pokyny na nastavenie vývojového prostredia pre Android a krátky návod na aplikáciu.

Informačný kanál RSS je súbor vo formáte XML, ktorý sa používa na zverejnenie pravidelne aktualizovaných publikovaných informácií. Informačný kanál RSS je možné analyzovať (tj načítať a formátovať) pomocou analyzátora XML. Analyzátory kompatibilné s Java, ktoré sa používajú na analýzu XML v systéme Android, zahŕňajú:

  • android.content.res.XmlResourceParser je analyzátor ťahu
  • Jednoduché API pre XML (SAX) sa nachádza v org.xml.sax balíček
  • Android ROME Feed Reader je čítačka RSS kanálov Google pre Android
  • Android Feed Reader je ďalšia čítačka feedov RSS / Atom Google pre Android
  • Android-rss je ľahká knižnica systému Android pre kanály RSS 2.0

Tento tip v jazyku Java predstavuje postupný úvod do používania aplikácie javax.xml.parsers.SAXParser analyzovať informačný kanál RSS vo formáte XML. SAXParser je štandardná voľba, pretože je súčasťou rozhraní API systému Android v súprave Android SDK. Nastavíme vývojové prostredie, vytvoríme jednoduchú aplikáciu a feed pre Android na demonštračné účely a potom pomocou programu SAXParser naformátujeme feed pre Android. Aj keď sa predpokladá určitá znalosť vývoja aplikácií Java, tento tip je vhodný pre vývojárov, ktorí začínajú s vývojom mobilných aplikácií Java.

Nastavenie prostredia

Vykonaním nasledujúcich krokov nastavíte vývojové prostredie pre tento projekt:

  1. Nainštalujte Eclipse IDE.
  2. Nainštalujte si doplnok Android Development Tools (ADT) pre Eclipse. Doplnok ADT pre Eclipse poskytuje sadu rozšírení na vývoj aplikácií pre Android v Eclipse.
  3. Nainštalujte si platformu Android 2.3 SDK. Android SDK poskytuje nástroje na vývoj aplikácií pre Android.
  4. Vytvorte virtuálne zariadenie Android a nastavte cieľové prostredie ako Android 2.3.3. API úrovne 10.

Projekt Android

Vytvoríme ukážkový projekt pre Android na príjem informačného kanála RSS.

  1. Vo svojom Eclipse IDE vyberte Súbor -> Nové.
  2. V ponuke Nový vyberte Android -> Android Project, potom kliknite na Ďalej.
  3. V okne Nový projekt pre Android zadajte názov projektu (RSSFeed).
  4. Vyberte Android Platform 2.3 API 10 pre svoj cieľ zostavenia.
  5. V časti Vlastnosti zadajte názov aplikácie (opäť RSSFeed) a názov balíka (android.rss).
  6. Začiarknite políčko: Vytvoriť aktivitu a zadajte Činnosť trieda (RSS zdroj).
  7. Zadajte minimálnu verziu SDK ako 10 a kliknite na Ďalej; alebo ak ste vybrali Platform 3.0 API 11, zadajte minimálnu verziu SDK ako 11.

Všimnite si, že činnosť (Krok 6) predstavuje interakciu používateľa. Trieda rozširujúca Činnosť trieda vytvorí okno pre používateľské rozhranie.

Výsledný projekt pre Android bude pozostávať z nasledujúcich súborov:

  1. Trieda aktivity (RSS zdroj), ktorá sa rozširuje Činnosť.
  2. A res / layout / main.xml súbor, ktorý určuje rozloženie komponentov používateľského rozhrania Android.
  3. An AndroidManifest.xml súbor, ktorý obsahuje konfiguráciu aplikácie, ako je napríklad názov balíka, hlavná aktivita, ktorá sa má spustiť pri spustení aplikácie pre Android, komponenty aplikácie, procesy, oprávnenia a minimálna úroveň API.

V res / layout / main.xml, zadajte rozloženie komponentov používateľského rozhrania Android. Vytvor LinearLayout a nastaviť android: orientácia ako „vertikálne"Naším cieľom je zobraziť informačný kanál RSS ako textovú správu, takže pridajte a TextView prvok pre názov informačného kanála RSS a zadajte android: text ako Google RSS Feed. Pridaj TextView prvok s ID "rss"na zobrazenie informačného kanála RSS. Výpis 1 zobrazuje výsledný main.xml.

Zoznam 1. Zadanie rozloženia komponentov používateľského rozhrania systému Android

V AndroidManifest.xml, uveďte Činnosť spustiť ako RSS zdroj. Pre prístup k informačnému kanálu RSS z webu na zariadení Android musíme povoliť android.permission.INTERNET povolenie v AndroidManifest.xml, ktorý umožňuje aplikáciám otvárať sieťové zásuvky. Pridajte nasledujúce používa-povolenie element:

Minimálnu verziu systému Android zadajte pomocou uses-sdk element. The RSS zdroj činnosť, filter úmyslova akcia sú špecifikované s prvkom aktivity a čiastkovými prvkami, ako je uvedené v zozname 2.

Zoznam 2. AndroidManifest.xml

Analyzujte kanál RSS pre Android

Ďalej použijeme javax.xml.parsers.SAXParser analyzovať náš informačný kanál RSS. Začnite importom nasledujúcich tried:

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

Pripomeňme, že RSS zdroj trieda predlžuje Činnosť. V RSS zdroj triedy, definujte premennú na výstup RSS kanálu:

Reťazec rssResult = "";

The onCreate (balík uložený v inštancii) metóda je vyvolaná pri spustení aktivity. V onCreate metódou, nastavte užívateľské rozhranie pomocou setContentView metóda a prostriedok rozloženia:

setContentView (R.layout.main);

Ďalej použijeme findViewById metóda definovania widgetu pre Android TextView objekt v main.xml:

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

Teraz použite konštruktor pre URL na zadanie adresy URL informačného kanála RSS:

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

Upozorňujeme, že informačný kanál RSS sa skladá z prvky pre položky krmiva. Každý pozostáva z názov, popis, odkaz, tvorcaa dátum čiastkové prvky.

Vytvorte SAXParser

Vytvor SAXParserFactory objekt pomocou statickej metódy novýInštancia:

SAXParserFactory factory = SAXParserFactory.newInstance ();

Vytvor SAXParser pomocou newSAXParser metóda:

SAXParser saxParser = factory.newSAXParser ();

Získať XMLReader z SAXParser pomocou getXMLReader metóda:

XMLReader xmlReader = saxParser.getXMLReader ();

Spracovanie udalostí SAX2

Ďalej musíme vytvoriť a DefaultHandler na spracovanie udalostí SAX2. Udalosti SAX2 sú udalosti syntaktickej analýzy XML, ako je začiatok a koniec dokumentu / prvku a údaje o znakoch. Pre DefaultHandler, najskôr vytvorte súkromnú triedu RSSHandler ktorý rozširuje DefaultHandler trieda. Definujte implementáciu pre metódy obsluhy udalostí startElement a znakov. Každá položka informačného kanála je obsiahnutá v element. V startElement metóda, ak localName je „položka“ pridať localName do rssResult Reťazec:

rssResult = rssResult + localName + ":";

V znakov metódou, pridajte znakové údaje do súboru rssResult Reťazec. Použi nahradiť všetko metóda na odstránenie všetkých medzier v informačnom kanáli RSS:

Reťazec cdata = nový Reťazec (ch, štart, dĺžka); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t";

V onCreate metóda, vytvorte RSSHandler objekt:

RSSHandler rssHandler = nový RSSHandler ();

Nastaviť RSSHandler ako obsluha obsahu v XMLReader objekt pomocou setContentHandler metóda:

xmlReader.setContentHandler (rssHandler);

Vytvorte InputSource objekt z adresy URL informačného kanála RSS. Otvorte stream adresy URL pomocou openStream metóda:

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

Analyzovať InputSource pomocou analyzovať metóda XMLReader objekt:

xmlReader.parse (inputSource);

Nastaviť rssResult Reťazec vygenerované z informačného kanála RSS na serveri TextView element:

rss.setText (rssResult);

A tým sme skončili. Kompletný Činnosť trieda RSS zdroj sa zobrazuje v zozname 3.

Zoznam 3. RSSFeed

balík android.rss; import android.app.Activity; importovať android.os.Bundle; import java.util.Stack; import android.widget.TextView; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import java.util.StringTokenizer; import java.net.MalformedURLException; import java.net.URL; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import java.io.IOException; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; importovať org.xml.sax.Attributes; import org.xml.sax.SAXException; importovať org.xml.sax.helpers.DefaultHandler; verejná trieda RSSFeed rozširuje aktivitu {/ ** Zavolá sa pri prvom vytvorení aktivity. * / String rssResult = ""; boolean item = false; @Override public void onCreate (bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); TextView rss = (TextView) findViewById (R.id.rss); skúsiť {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); } / ** public String removeSpaces (String s) {StringTokenizer st = nový StringTokenizer (s, "", false); Reťazec; while (st.hasMoreElements ()) t + = st.nextElement (); návrat t; } * / private class RSSHandler extends DefaultHandler {public void startElement (String uri, String localName, String qName, Attributes attrs) throws 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) throws SAXException {} public void characters (char [] ch, int start, int length) throws SAXException {String cdata = new String (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t"; }}}

Spustená aplikácia pre Android

Teraz sa pozrime, čo sa stane, keď spustíme aplikáciu pre Android. Najskôr kliknite pravým tlačidlom myši na aplikáciu RSSFeed vo svojom Eclipse IDE a vyberte Spustiť ako -> Aplikácia pre Android.

Vaše výsledky sa budú mierne líšiť v závislosti od konfigurácie: Ak ste nakonfigurovali Android Platform 11 a API 3.0, spustí sa Platforma AVD. Ak ste vybrali platformu Android 10 a API 2.3, spustí sa platforma 10 AVD. Aplikácia RSSFeed by sa mala v každom prípade zobraziť ako nasadená na správnom zariadení so systémom Android.

Teraz kliknite na aplikáciu RSSFeed, aby sa zobrazil informačný kanál RSS, ktorý by sa mal zobraziť, ako je to znázornené na obrázku 1.

Na záver

V tomto tipe pre Java ste sa naučili, ako nastaviť RSS kanál na Androide pomocou SAXParser, ktorá sa dodáva spolu s Android SDK. Túto aplikáciu pre akýkoľvek informačný kanál RSS môžete upraviť zmenou adresy URL RSS. Urobili sme tiež jednoduché cvičenie pri formátovaní informačného kanála RSS odstránením nadbytočných medzier medzi uvedenými článkami.

Deepak Vohra je programátorom Java s certifikáciou Sun, spoločnosťou Sun Certified Web Component Developer a predtým publikoval články o časopisoch XML Journal, Java Developer's Journal, WebLogic Journal a Java.net.

Získajte viac informácií o tejto téme

Získajte viac informácií o Androide.

  • Stiahnite si Android SDK.
  • Stiahnite si Android Development Tools (ADT).
  • Stiahnite si JDK
  • Stiahnite si najnovšiu verziu Eclipse pre Java EE.

Viac od JavaWorld

  • Pozrite sa na výskumnú zónu Java Java pre mobilnú Java, kde nájdete ďalšie články, ako je tento.
  • Navštívte mapu stránok JavaWorld, kde nájdete kompletný zoznam výskumných centier zameraných na klientske, podnikové a základné vývojové nástroje a témy Java.
  • Java Technology Insider spoločnosti JavaWorld je séria podcastov, ktorá vám umožní učiť sa od odborníkov na technológiu Java na ceste do práce.

Tento príbeh, „Java Tip: Nastavte RSS kanál pre svoju aplikáciu pre Android“, pôvodne publikoval JavaWorld.

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