본문 바로가기
기술자료/Android

자작 환율정보 플그램

by 알 수 없는 사용자 2010. 8. 13.
728x90
반응형

안드로이드 초반에 공부할때 만든 버전이라
내용이 허접합니다..
단 xml 파싱에 대한 것을 볼수 있다는 장점!!

완성도가 높지는 않으니.. 필요하신분은 더 꾸며서 쓰세연~


=========================
Money.java
=========================
package com.androidhuman.money;

import java.net.URL;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Money extends Activity {
   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        final TextView txtDate = (TextView)findViewById(R.id.txtDate);
        final TextView txtMoney = (TextView)findViewById(R.id.txtMoney);
        Button btnMoney = (Button)findViewById(R.id.btnMoney);
        btnMoney.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
               
                try {
                     /* Create a URL we want to load some xml-data from. */
                     URL url = new URL("http://www.naver.com/include/timesquare/widget/exchange.xml");

                     /* Get a SAXParser from the SAXPArserFactory. */
                     SAXParserFactory spf = SAXParserFactory.newInstance();
                     SAXParser sp = spf.newSAXParser();

                     /* Get the XMLReader of the SAXParser we created. */
                     XMLReader xr = sp.getXMLReader();
                     /* Create a new ContentHandler and apply it to the XML-Reader*/
                     GetMoneyHandler myMoneyHandler = new GetMoneyHandler();
                     xr.setContentHandler(myMoneyHandler);
                     
                     /* Parse the xml-data from our URL. */
                     xr.parse(new InputSource(url.openStream()));
                     /* Parsing has finished. */

                     /* Our ExampleHandler now provides the parsed data to us. */
                     ParsedMoneyDataSet parsedMoneyDataSet =
                                                   myMoneyHandler.getParsedData();

                     /* Set the result to be displayed in our GUI. */
                     String temp = parsedMoneyDataSet.toDay();
                    
                     String year = temp.substring(0, 4);
                     String month = temp.substring(4, 6);
                     String day = temp.substring(6, 8);
                     String hour = temp.substring(8, 10);
                     String minite = temp.substring(10, 12);
                     String second = temp.substring(12, 14);
                     String time = year + "년 " + month + "월 " + day + "일 "
                                     + hour + "시 " + minite + "분 " + second + "초";
                    
                     txtDate.setText(time);
                     txtMoney.setText(parsedMoneyDataSet.toMoney());
                     
                } catch (Exception e) {
                     /* Display any Error to the GUI. */
                     //tv.setText("Error: " + e.getMessage());
                     Log.e("Debug Tag", "WeatherQueryError", e);
                }
               
               
            }
           
        });
    }
}


================================
GetMoneyHandler.java
================================
package com.androidhuman.money;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.util.Log;

public class GetMoneyHandler extends DefaultHandler {
   
    private boolean in_last_update = false;
    private boolean in_exchange_count = false;
    private boolean in_ename = false;
    private boolean in_hname = false;
    private boolean in_standard = false;
    private boolean in_mname = false;
   
    private ParsedMoneyDataSet myParsedMoneyDataSet = new ParsedMoneyDataSet();

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        // TODO Auto-generated method stub
        String str = new String(ch, start, length);
        if(this.in_last_update){
            Log.d("last_update", str);
            myParsedMoneyDataSet.setLast_update(str);
        }
        if(this.in_exchange_count){
            Log.d("exchange_count", str);
            int i = Integer.parseInt(str);
            myParsedMoneyDataSet.setExchange_count(i);           
        }
        if(this.in_ename){
            Log.d("ename", str);
            myParsedMoneyDataSet.setEname(str);
            myParsedMoneyDataSet.setVctEname(str);
        }
        if(this.in_hname){
            Log.d("hname", str);
            myParsedMoneyDataSet.setHname(str);
            myParsedMoneyDataSet.setVctHname(str);
        }
        if(this.in_standard){
            Log.d("standard", str);
            myParsedMoneyDataSet.setStandard(str);
            myParsedMoneyDataSet.setVctStandard(str);
        }
        if(this.in_mname){
            Log.d("mname", str);
            myParsedMoneyDataSet.setMname(str);
            myParsedMoneyDataSet.setVctMname(str);
        }
        //super.characters(ch, start, length);
    }

    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        // TODO Auto-generated method stub
        if (localName.equals("last_update")) {
            this.in_last_update = false;
        }else if (localName.equals("exchange_count")) {
            this.in_exchange_count = false;
        }else if (localName.equals("ename")) {
            this.in_ename = false;
        }else if (localName.equals("hname")) {
            this.in_hname = false;
        }else if (localName.equals("standard")) {
            this.in_standard = false;
        }else if (localName.equals("m_name")){
            this.in_mname = false;
        }
        //super.endElement(uri, localName, qName);
    }

    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        // TODO Auto-generated method stub
        if (localName.equals("last_update")) {
            this.in_last_update = true;
        }else if (localName.equals("exchange_count")) {
            this.in_exchange_count = true;
        }else if (localName.equals("ename")) {
            this.in_ename = true;
        }else if (localName.equals("hname")) {
            this.in_hname = true;
        }else if (localName.equals("standard")) {
            this.in_standard = true;
        }else if (localName.equals("m_name")){
            this.in_mname = true;
        }
        //super.startElement(uri, localName, qName, attributes);
    }

    @Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.endDocument();
    }

    @Override
    public void startDocument() throws SAXException {
        // TODO Auto-generated method stub
        myParsedMoneyDataSet = new ParsedMoneyDataSet();
        //super.startDocument();
    }

    public ParsedMoneyDataSet getParsedData() {
        // TODO Auto-generated method stub
        return this.myParsedMoneyDataSet;
        //return null;
    }

   

}


================================
ParsedMoneyDataSet.java
================================
package com.androidhuman.money;

import java.util.Vector;

import android.util.Log;

public class ParsedMoneyDataSet {
 private String last_update = null;
    private int exchange_count = 0;
    private String ename = null;
    private String hname = null;
    private String standard = null;
    private String mname = null;
   
 private Vector<String> vct_ename = new Vector<String>();
 private Vector<String> vct_hname = new Vector<String>();
 private Vector<String> vct_standard = new Vector<String>();
 private Vector<String> vct_mname = new Vector<String>();

 public void setVctEname(String ename){
  this.vct_ename.add(ename);
 }
 
 public void setVctHname(String hname){
  this.vct_hname.add(hname);
 }
 
 public void setVctStandard(String standard){
  this.vct_standard.add(standard);
 }
 
 public void setVctMname(String mname){
  this.vct_mname.add(mname);
 }
 
    public String getLast_update(){
     return last_update;
    }
   
    public void setLast_update(String last_update){
     this.last_update = last_update;
    }
   
    public int getExchange_count(){
     return exchange_count;
    }
   
    public void setExchange_count(int exchange_count){
     this.exchange_count = exchange_count;
    }
   
    public String getEname(){
     return ename;
    }
   
    public void setEname(String ename){
     this.ename = ename;
    }
   
    public String getHname(){
     return hname;
    }
   
    public void setHname(String hname){
     this.hname = hname;
    }
   
    public String getStandard(){
     return standard;
    }
   
    public void setStandard(String standard){
     this.standard = standard;
    }
   
    public String getMname(){
     return mname;
    }
   
    public void setMname(String mname){
     this.mname = mname;
    }
   
    public String toDay(){
     return last_update;
    }
   
    public String toString(){
         return "ename =>" + this.ename
                + "\nhname => " + this.hname
                + "\nstandard =>" + this.standard;
    }
   
    public String toMoney(){
     String temp = "";
     int i;
     int size = vct_ename.size();
     Log.d("size", ""+vct_ename.size());
     for(i = 0; i<size-1; i++){
      //Log.d("count", ""+i);
      temp = temp + "Ename = " + (String)vct_ename.elementAt(i)
        + "\nHname = " + (String)vct_hname.elementAt(i)
        + "\nStandard = " + (String)vct_standard.elementAt(i)
        //+ " " + (String)vct_mname.elementAt(i) + "\n\n";
        + "\n\n";
      /*
      String temp2 = "Ename = " + (String)vct_ename.elementAt(i)
   + "\nHname = " + (String)vct_hname.elementAt(i)
   + "\nStandard = " + (String)vct_standard.elementAt(i)
   + "\n\n";
      Log.d("temp", temp2);
      */
     }
     
     return temp;
    }
}



===============================
main.xml
===============================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
   
    <LinearLayout
        android:id="@+id/helpLayout"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <Button
            android:text="환율보기"
            android:id="@+id/btnMoney"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <TextView
            android:text=""
            android:id="@+id/txtDate"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
   
    <ScrollView
        android:id="@+id/scrMoney"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:text=""
            android:id="@+id/txtMoney"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </ScrollView>
</LinearLayout>



============================
AndroidManifest.xml
============================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.androidhuman.money"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Money"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="6" />

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>




728x90