Tip Java: Siapkan RSS feed untuk aplikasi Android Anda

Gunakan SAXParser Java untuk mengambil dan mengurai umpan RSS untuk Android. Tip Java ini untuk pengembang yang baru mengenal Android dan menyertakan petunjuk untuk menyiapkan lingkungan pengembangan Android dan tutorial aplikasi singkat.

Umpan RSS adalah file berformat XML yang digunakan untuk menerbitkan informasi sindikasi yang diperbarui secara berkala. Umpan RSS dapat diurai (yaitu, dibaca dan diformat) menggunakan pengurai XML. Parser yang kompatibel dengan Java yang digunakan untuk mengurai XML di Android meliputi:

  • android.content.res.XmlResourceParser adalah parser tarik
  • API sederhana untuk XML (SAX) ditemukan di dalam org.xml.saxpaket
  • Android ROME Feed Reader adalah pembaca RSS feed Google untuk Android
  • Android Feed Reader adalah pembaca RSS / Atom feed lain untuk Android
  • Android-rss adalah pustaka Android ringan untuk umpan RSS 2.0

Tip Java ini adalah pengenalan langkah demi langkah untuk menggunakan javax.xml.parsers.SAXParseruntuk mengurai RSS feed dalam format XML. SAXParser adalah pilihan standar karena disertakan dengan Android API di Android SDK. Kami akan menyiapkan lingkungan pengembangan, membuat aplikasi dan umpan Android sederhana untuk tujuan demonstrasi, lalu menggunakan SAXParser untuk memformat umpan untuk Android. Sementara beberapa keakraban dengan pengembangan aplikasi Java diasumsikan, tip ini cocok untuk pengembang yang baru mengenal pengembangan seluler Java.

Menyiapkan lingkungan

Lakukan langkah-langkah berikut untuk menyiapkan lingkungan pengembangan untuk proyek ini:

  1. Instal Eclipse IDE.
  2. Instal plugin Android Development Tools (ADT) untuk Eclipse. Plugin ADT untuk Eclipse menyediakan sekumpulan ekstensi untuk mengembangkan aplikasi Android di Eclipse.
  3. Instal platform Android 2.3 SDK. Android SDK menyediakan alat untuk mengembangkan aplikasi Android.
  4. Buat Perangkat Virtual Android dan setel lingkungan Target sebagai Android 2.3.3. API Level 10.

Proyek Android

Kami akan membuat contoh proyek Android untuk menerima umpan RSS.

  1. Di Eclipse IDE Anda pilih File -> New .
  2. Di New pilih Android -> Android Project , lalu klik Next.
  3. Di jendela New Android Project, tentukan nama Project (RSSFeed).
  4. Pilih Android Platform 2.3 API 10 untuk Build Target Anda.
  5. Di Properti, tentukan nama Aplikasi (sekali lagi, RSSFeed), dan nama Paket (android.rss).
  6. Pilih kotak centang: Buat Aktivitas, dan tentukan Activitykelasnya ( RssFeed).
  7. Tentukan versi SDK minimum sebagai 10 dan klik Next; atau, jika Anda telah memilih Platform 3.0 API 11, tentukan Versi SDK minimum sebagai 11.

Perhatikan bahwa aktivitas (Langkah 6) merepresentasikan interaksi pengguna. Kelas yang memperluas Activitykelas membuat jendela untuk UI.

Proyek Android yang dihasilkan akan terdiri dari file-file berikut:

  1. Kelas aktivitas ( RSSFeed), yang meluas Activity.
  2. File res / layout / main.xml , yang menetapkan tata letak komponen UI Android.
  3. File AndroidManifest.xml , yang berisi konfigurasi aplikasi seperti nama paket, aktivitas utama yang akan diluncurkan saat aplikasi Android dimulai, komponen aplikasi, proses, izin, dan level API minimum.

Di res / layout / main.xml , tentukan tata letak komponen UI Android. Buat LinearLayoutdan tetapkan android:orientationsebagai " vertical." Tujuan kami adalah menampilkan umpan RSS sebagai pesan teks, jadi tambahkan TextViewelemen untuk judul umpan RSS dan tentukan android:textsebagai Umpan RSS Google. Tambahkan TextViewelemen, dengan id " rss" untuk menampilkan umpan RSS. Kode 1 menunjukkan main.xml yang dihasilkan.

Daftar 1. Menentukan tata letak komponen UI Android

Di AndroidManifest.xml , tentukan Activityuntuk diluncurkan sebagai RSSFeed. Untuk mengakses RSS feed dari Web di perangkat Android kita perlu mengaktifkan android.permission.INTERNETizin di AndroidManifest.xml , yang memungkinkan aplikasi untuk membuka soket jaringan. Tambahkan uses-permissionelemen berikut :

Tentukan versi Android minimum dengan uses-sdkelemen tersebut. The RSSFeedkegiatan, yang intent-filter, dan actionditentukan dengan unsur kegiatan dan sub-elemen, seperti ditunjukkan pada Listing 2.

Daftar 2. AndroidManifest.xml

Parse RSS feed untuk Android

Selanjutnya kita akan menggunakan javax.xml.parsers.SAXParseruntuk mengurai RSS feed kita. Mulailah dengan mengimpor kelas-kelas berikut:

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

Ingatlah bahwa RSSFeedkelas itu meluas Activity. Di RSSFeedkelas, tentukan variabel untuk mengeluarkan umpan RSS:

String rssResult = "";

The onCreate(Bundle savedInstanceState)Metode dipanggil ketika aktivitas dimulai. Dalam onCreatemetode, setel antarmuka pengguna menggunakan setContentViewmetode dan sumber tata letak:

setContentView(R.layout.main);

Selanjutnya, kami menggunakan findViewByIdmetode untuk mendefinisikan TextViewobjek widget Android di main.xml:

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

Sekarang gunakan konstruktor untuk URLuntuk menentukan URL umpan RSS:

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

Perhatikan bahwa RSS feed terdiri dari elemen item feed. Masing-masing terdiri dari title, description, link, creator, dan datesub-elemen.

Buat SAXParser

Buat SAXParserFactoryobjek menggunakan metode statis newInstance:

SAXParserFactory factory = SAXParserFactory.newInstance();

Buat SAXParsermenggunakan newSAXParsermetode:

SAXParser saxParser = factory.newSAXParser();

Dapatkan XMLReaderdari SAXParsermenggunakan getXMLReadermetode:

XMLReader xmlReader = saxParser.getXMLReader();

Menangani peristiwa SAX2

Next, we need to create a DefaultHandler to handle SAX2 events. SAX2 events are XML-parsing events such as the start and end of a document/element, and character data. For the DefaultHandler, first create a private class RSSHandler that extends the DefaultHandler class. Define the implementation for the event handler methods startElement and characters. Each feed item is contained in an element. In the startElement method, if the localName is "item" add the localName to the rssResult String:

rssResult = rssResult + localName + ": ";

In the characters method, add the character data to the rssResult String. Use the replaceAll method to remove all extra spaces in the RSS feed:

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

In the onCreate method, create an RSSHandler object:

RSSHandler rssHandler = new RSSHandler();

Set the RSSHandler as a content handler on the XMLReader object using the setContentHandler method:

xmlReader.setContentHandler(rssHandler);

Create an InputSource object from the URL for the RSS feed. Open the URL stream using the openStream method:

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

Parse the InputSource using the parse method of the XMLReader object:

xmlReader.parse(inputSource);

Set the rssResult String generated from the RSS feed on the TextView element:

rss.setText(rssResult);

And with that, we're done. The complete Activity class RSSFeed is shown in Listing 3.

Listing 3. RSSFeed

package android.rss; import android.app.Activity; import 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; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class RSSFeed extends Activity { /** Called when the activity is first created. */ 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); try { URL rssUrl = new URL("//www.javaworld.com/index.xml"); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); XMLReader xmlReader = saxParser.getXMLReader(); RSSHandler rssHandler = new RSSHandler(); xmlReader.setContentHandler(rssHandler); InputSource inputSource = new 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); String; while (st.hasMoreElements()) t += st.nextElement(); return 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"; } } }

Running the Android application

Now let's see what happens when we run the Android application. First, right-click on the RSSFeed application in your Eclipse IDE and select Run As-->Android Application.

Your results will vary slightly based on configuration: If you've configured Android Platform 11 and API 3.0, then Platform 11 AVD will start up. If you've selected Android platform 10 and API 2.3, then platform 10 AVD will start. Either way, the RSSFeed application should be shown as deployed on the correct Android device.

Now click on the RSSFeed application to display the RSS feed, which should appear as shown in Figure 1.

In conclusion

In this Java tip you learned how to set up an RSS feed on Android using SAXParser, which comes bundled with the Android SDK. You can modify this application for any RSS feed by changing the RSS URL. We also did a simple exercise in formatting the RSS feed by removing extra spaces between listed articles.

Deepak Vohra is a Sun Certified Java Programmer, Sun Certified Web Component Developer, and has previously published articles on XML Journal, Java Developer's Journal, WebLogic Journal, and Java.net.

Learn more about this topic

Learn more about Android.

  • Download the Android SDK.
  • Download the Android Development Tools (ADT).
  • Download the JDK
  •  Download the latest version of Eclipse for Java EE.

More from JavaWorld

  • Check out JavaWorld's Mobile Java research zone for more articles like this one.
  • See the JavaWorld Site Map for a complete listing of research centers focused on client-side, enterprise, and core Java development tools and topics.
  • JavaWorld's Java Technology Insider is a podcast series that lets you learn from Java technology experts on your way to work.

Artikel ini, "Tip Java: Siapkan RSS feed untuk aplikasi Android Anda", awalnya diterbitkan oleh JavaWorld.