|
package com.hardcorelab.nasaimageoftheday; |
|
|
|
import android.graphics.Bitmap; |
|
import android.graphics.BitmapFactory; |
|
|
|
import org.xml.sax.Attributes; |
|
import org.xml.sax.InputSource; |
|
import org.xml.sax.SAXException; |
|
import org.xml.sax.XMLReader; |
|
import org.xml.sax.helpers.DefaultHandler; |
|
|
|
import java.io.InputStream; |
|
import java.net.HttpURLConnection; |
|
import java.net.URL; |
|
|
|
import javax.xml.parsers.SAXParser; |
|
import javax.xml.parsers.SAXParserFactory; |
|
|
|
/** |
|
* Created by hulk on 13-7-30. |
|
*/ |
|
public class IotdHandler extends DefaultHandler { |
|
private String url = "http://www.nasa.gov/rss/image_of_the_day.rss"; |
|
|
|
private boolean inUrl = false; |
|
private boolean inTitle = false; |
|
private boolean inDescription = false; |
|
private boolean inItem = false; |
|
private boolean inDate = false; |
|
|
|
private Bitmap image = null; |
|
private String title = null; |
|
private StringBuffer description = new StringBuffer(); |
|
private String date = null; |
|
|
|
public void processFeed() { |
|
try { |
|
SAXParserFactory factory = SAXParserFactory.newInstance(); |
|
SAXParser parser = factory.newSAXParser(); |
|
XMLReader reader = parser.getXMLReader(); |
|
reader.setContentHandler(this); |
|
InputStream inputStream = new URL(url).openStream(); |
|
reader.parse(new InputSource(inputStream)); |
|
} catch (Exception e) { |
|
e.printStackTrace(); |
|
} |
|
} |
|
|
|
private Bitmap getBitmap(String url){ |
|
try { |
|
HttpURLConnection connection=(HttpURLConnection)new URL(url).openConnection(); |
|
connection.setDoInput(true); |
|
connection.connect(); |
|
InputStream input=connection.getInputStream(); |
|
Bitmap bitmap= BitmapFactory.decodeStream(input); |
|
input.close(); |
|
return bitmap; |
|
} catch (Exception e) { |
|
return null; |
|
} |
|
} |
|
|
|
@Override |
|
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { |
|
System.out.println("In--------------->"+localName); |
|
System.out.println("Start------>"+localName); |
|
|
|
if (localName.equals("enclosure")) { |
|
url=attributes.getValue("url"); |
|
inUrl=true; |
|
} else { |
|
inUrl=false; |
|
} |
|
if (localName.startsWith("item")) { |
|
inItem=true; |
|
} else { |
|
if (inItem) { |
|
if (localName.equals("title")) { |
|
inTitle=true; |
|
} else { |
|
inTitle=false; |
|
} |
|
if (localName.equals("description")) { |
|
inDescription=true; |
|
} else { |
|
inDescription=false; |
|
} |
|
if (localName.equals("pubDate")) { |
|
inDate=true; |
|
} else { |
|
inDate=false; |
|
} |
|
} |
|
} |
|
} |
|
|
|
@Override |
|
public void characters(char[] ch, int start, int length) throws SAXException { |
|
String chars = new String(ch).substring(start, start + length); |
|
System.out.println(chars); |
|
if (inUrl) { |
|
image = getBitmap(url); |
|
} |
|
if (inTitle && title == null) { |
|
title = chars; |
|
} |
|
if (inDescription) { |
|
description.append(chars); |
|
} |
|
if (inDate && date==null) { |
|
date=chars; |
|
} |
|
} |
|
|
|
public Bitmap getImage() { |
|
return image; |
|
} |
|
|
|
public String getTitle() { |
|
return title; |
|
} |
|
|
|
public StringBuffer getDescription() { |
|
return description; |
|
} |
|
|
|
public String getDate() { |
|
return date; |
|
} |
|
} |