Programování

Tip pro Javu: Nastavte pro svou aplikaci pro Android kanál RSS

Použijte Java SAXParser k načtení a analýze kanálu RSS pro Android. Tento tip pro Javu je určen pro vývojáře, kteří začínají s Androidem, a obsahuje pokyny pro nastavení vývojového prostředí pro Android a krátký návod k aplikaci.

Informační kanál RSS je soubor ve formátu XML, který se používá k publikování pravidelně aktualizovaných syndikovaných informací. Zdroj RSS lze analyzovat (tj. Číst a formátovat) pomocí analyzátoru XML. Analyzátory kompatibilní s Javou, které se používají k analýze XML v systému Android, zahrnují:

  • android.content.res.XmlResourceParser je analyzátor tahu
  • Jednoduché API pro XML (SAX) se nachází v org.xml.sax balík
  • Android ROME Feed Reader je čtečka RSS kanálů Google pro Android
  • Android Feed Reader je další čtečka kanálů Google RSS / Atom pro Android
  • Android-rss je odlehčená knihovna pro Android pro kanály RSS 2.0

Tento tip pro Javu je krok za krokem k používání javax.xml.parsers.SAXParser analyzovat RSS kanál ve formátu XML. SAXParser je standardní volbou, protože je součástí rozhraní Android API v sadě Android SDK. Nastavíme vývojové prostředí, vytvoříme jednoduchou aplikaci pro Android a informační kanál pro demonstrační účely a poté použijeme SAXParser k formátování informačního kanálu pro Android. I když se předpokládá určitá znalost vývoje Java aplikací, tento tip je vhodný pro vývojáře, kteří začínají s mobilním vývojem Java.

Nastavení prostředí

K nastavení vývojového prostředí pro tento projekt použijte následující kroky:

  1. Nainstalujte Eclipse IDE.
  2. Nainstalujte si plugin pro vývojové nástroje Android (ADT) pro Eclipse. Plugin ADT pro Eclipse poskytuje sadu rozšíření pro vývoj aplikací pro Android v Eclipse.
  3. Nainstalujte si platformu Android 2.3 SDK. Android SDK poskytuje nástroje pro vývoj aplikací pro Android.
  4. Vytvořte virtuální zařízení Android a nastavte cílové prostředí jako Android 2.3.3. API úrovně 10.

Projekt Android

Vytvoříme ukázkový projekt Android pro příjem kanálu RSS.

  1. Ve svém Eclipse IDE vyberte Soubor -> Nový.
  2. V nabídce Nový vyberte Android -> Android Project, poté klikněte na Další.
  3. V okně Nový projekt pro Android zadejte název projektu (RSSFeed).
  4. Vyberte Android Platform 2.3 API 10 pro svůj cíl sestavení.
  5. V části Vlastnosti zadejte název aplikace (opět RSSFeed) a název balíčku (android.rss).
  6. Zaškrtněte políčko: Vytvořit aktivitu a zadejte Aktivita třída (RssFeed).
  7. Zadejte minimální verzi SDK jako 10 a klikněte na Další; nebo pokud jste vybrali Platform 3.0 API 11, zadejte minimální verzi SDK jako 11.

Všimněte si, že aktivita (Krok 6) představuje interakci uživatele. Třída rozšiřující Aktivita třída vytvoří okno pro uživatelské rozhraní.

Výsledný projekt Android se bude skládat z následujících souborů:

  1. Třída aktivity (RSSFeed), který se rozšiřuje Aktivita.
  2. A res / layout / main.xml soubor, který určuje rozložení komponent uživatelského rozhraní Android.
  3. An AndroidManifest.xml soubor, který obsahuje konfiguraci aplikace, jako je název balíčku, hlavní aktivita, která se má spustit při spuštění aplikace pro Android, komponenty aplikace, procesy, oprávnění a minimální úroveň API.

v res / layout / main.xml, zadejte rozložení součástí uživatelského rozhraní Android. Vytvořit Lineární rozvržení a nastavit android: orientace tak jako "vertikální"Naším cílem je zobrazit RSS kanál jako textovou zprávu, takže přidejte a Textový pohled prvek pro název kanálu RSS a upřesněte Android: text jako RSS kanál Google. Přidat Textový pohled prvek s ID "rss"pro zobrazení RSS kanálu. Výpis 1 zobrazuje výsledný main.xml.

Výpis 1. Určení rozložení komponent uživatelského rozhraní Android

v AndroidManifest.xml, zadejte Aktivita spustit jako RSSFeed. Pro přístup k kanálu RSS z webu na zařízení Android musíme povolit android.permission.INTERNET povolení v AndroidManifest.xml, který umožňuje aplikacím otevírat síťové zásuvky. Přidejte následující používá povolení živel:

Určete minimální verzi systému Android pomocí uses-sdk živel. The RSSFeed činnost, filtr záměru, a akce jsou specifikovány s aktivním prvkem a dílčími prvky, jak je uvedeno v seznamu 2.

Výpis 2. AndroidManifest.xml

Analyzovat RSS kanál pro Android

Dále použijeme javax.xml.parsers.SAXParser analyzovat náš RSS kanál. Začněte importem následujících tříd:

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

Připomeňme, že RSSFeed třída se prodlužuje Aktivita. V RSSFeed třídy, definujte proměnnou pro výstup kanálu RSS:

Řetězec rssResult = "";

The onCreate (Bundle savedInstanceState) metoda je vyvolána při spuštění aktivity. V onCreate metoda, nastavte uživatelské rozhraní pomocí setContentView metoda a prostředek rozvržení:

setContentView (R.layout.main);

Dále použijeme findViewById metoda pro definování widgetu pro Android Textový pohled objekt v main.xml:

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

Nyní použijte konstruktor pro URL určit adresu URL zdroje RSS:

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

Pamatujte, že RSS kanál se skládá z prvky pro položky krmiva. Každý skládá se z název, popis, odkaz, tvůrce, a datum dílčí prvky.

Vytvořte SAXParser

Vytvořit SAXParserFactory objekt pomocí statické metody novýInstance:

SAXParserFactory factory = SAXParserFactory.newInstance ();

Vytvořit SAXParser za použití novýSAXParser metoda:

SAXParser saxParser = factory.newSAXParser ();

Získejte XMLReader z SAXParser za použití getXMLReader metoda:

XMLReader xmlReader = saxParser.getXMLReader ();

Zpracování událostí SAX2

Dále musíme vytvořit DefaultHandler zpracovávat události SAX2. Události SAX2 jsou události analýzy XML, jako je začátek a konec dokumentu / prvku a data znaků. Pro DefaultHandler, nejprve vytvořte soukromou třídu RSSHandler který rozšiřuje DefaultHandler třída. Definujte implementaci pro metody obsluhy událostí startElement a postavy. Každá položka zdroje je obsažena v živel. V startElement metoda, pokud localName je „položka“ přidat localName do rssResult Řetězec:

rssResult = rssResult + localName + ":";

V postavy přidejte znaková data do souboru rssResult Řetězec. Použijte vyměnit vše metoda odstranění všech mezer navíc ve zdroji RSS:

String cdata = new String (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t";

V onCreate metoda, vytvořte RSSHandler objekt:

RSSHandler rssHandler = nový RSSHandler ();

Nastav RSSHandler jako obsluha obsahu na webu XMLReader objekt pomocí setContentHandler metoda:

xmlReader.setContentHandler (rssHandler);

Vytvořit InputSource objekt z adresy URL kanálu RSS. Otevřete stream URL pomocí openStream metoda:

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

Analyzovat InputSource za použití analyzovat metoda XMLReader objekt:

xmlReader.parse (inputSource);

Nastav rssResult Řetězec generované z kanálu RSS na webu Textový pohled živel:

rss.setText (rssResult);

A tím jsme skončili. Kompletní Aktivita třída RSSFeed je zobrazen v seznamu 3.

Výpis 3. RSSFeed

balíček android.rss; import android.app.Activity; importovat 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; importovat org.xml.sax.Attributes; import org.xml.sax.SAXException; importovat org.xml.sax.helpers.DefaultHandler; veřejná třída RSSFeed rozšiřuje aktivitu {/ ** Volá se při prvním vytvoření 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); zkuste {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 = new StringTokenizer (s, "", false); Tětiva; 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"; }}}

Spuštění aplikace pro Android

Nyní se podívejme, co se stane, když spustíme aplikaci pro Android. Nejprve klikněte pravým tlačítkem na aplikaci RSSFeed ve svém Eclipse IDE a vyberte Spustit jako -> Aplikace pro Android.

Vaše výsledky se budou mírně lišit podle konfigurace: Pokud jste nakonfigurovali platformu Android 11 a API 3.0, spustí se platforma AVD. Pokud jste vybrali platformu Android 10 a API 2.3, spustí se platforma 10 AVD. V každém případě by se aplikace RSSFeed měla zobrazit jako nasazená na správném zařízení Android.

Nyní kliknutím na aplikaci RSSFeed zobrazte informační kanál RSS, který by se měl zobrazit, jak je znázorněno na obrázku 1.

Závěrem

V tomto tipu pro Java jste se naučili, jak nastavit RSS kanál na Androidu pomocí SAXParser, který je dodáván se sadou Android SDK. Tuto aplikaci můžete upravit pro libovolný kanál RSS změnou adresy URL RSS. Provedli jsme také jednoduché cvičení při formátování kanálu RSS odstraněním mezer mezi uvedenými články.

Deepak Vohra je programátor Java s certifikací Sun, vývojář webových komponent Sun Certified, a dříve publikoval články v časopisech XML Journal, Java Developer's Journal, WebLogic Journal a Java.net.

Další informace o tomto tématu

Další informace o Androidu.

  • Stáhněte si Android SDK.
  • Stáhněte si vývojové nástroje pro Android (ADT).
  • Stáhněte si JDK
  • Stáhněte si nejnovější verzi Eclipse pro Java EE.

Více od JavaWorld

  • Podívejte se na výzkumnou zónu Java Java pro mobilní Java, kde najdete další články, jako je tento.
  • Podívejte se na mapu stránek JavaWorld, kde najdete kompletní seznam výzkumných center zaměřených na klientské, podnikové a základní vývojové nástroje a témata Java.
  • JavaWorld Java Technology Insider je série podcastů, která vám umožní učit se od odborníků na technologii Java na vaší cestě do práce.

Tento příběh, „Java Tip: Nastavení kanálu RSS pro vaši aplikaci pro Android“, původně publikoval JavaWorld.