[개발자료] Android : OpenAPI (REST) - Public Data (버스)



- 개        요
     - Android Developers
- 내        용
    1) 프로젝트를 생성한다.
    2) 프로젝트에서 메뉴 Tab 을 설정한다.
         - Fragment_Tabs 을 설정한다.

    3) 공공데이터포털 사이트에 접속한다.

    4) 프로그래밍 한다.

         - Fragment_Section3.java

package kr.co.xsun.basic;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment_Section3 extends Fragment {

public Fragment_Section3() {
// TODO Auto-generated constructor stub
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.layout_fragment_section3,
container, false);

Button btn = (Button) findViewById(R.id.public_data_call);
btn.setOnClickListener(this);

return rootView;
}

@Override
public void onClick(View v) {
EditText et_webpage_src = (EditText) findViewById(R.id.public_data_src);
try {
String serviceUrl = "http://openapi.tago.go.kr/openapi/service/";
String serviceKey = " "; // OpenAPI Key
serviceKey = URLEncoder.encode(serviceKey);
String strSrch = "5500";
String strURL = serviceUrl + "?ServiceKey=" + serviceKey
+ "&strSrch=" + strSrch;
URL url = new URL(strURL);

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(url.openStream(), "utf-8");

int eventType = parser.getEventType();
boolean bSet = false;

while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;

case XmlPullParser.START_TAG:
String tag = parser.getName();
if (tag.equals("busRouteNm") || tag.equals("stStationNm")
|| tag.equals("edStationNm")) {
bSet = true;
}
break;
case XmlPullParser.END_TAG:
break;
case XmlPullParser.TEXT:
if (bSet) {
String content = parser.getText();
et_webpage_src.append(content + "\n");
bSet = false;
}
break;
case XmlPullParser.END_DOCUMENT:
break;
}
eventType = parser.next();
}
} catch (Exception e) {
Toast.makeText(v.getContext(), e.getMessage(), 0).show();
}

}
}

         - layout_fragment_section3.xml
   
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/public_data_call"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/public_data_src"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#0000ff"
        android:gravity="top" />

</LinearLayout>

         - AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="kr.co.xsun.basic"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="18" />

    <permission
        android:name="kr.co.xsun.basic.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
   
    <uses-permission android:name="kr.co.xsun.basic.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.RESTART_PACKAGES"/>

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="API_Key" />

        <activity
            android:name="kr.co.xsun.basic.Activity_Intro"
            android:hardwareAccelerated="true"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="kr.co.xsun.basic.Activity_Main"
            android:hardwareAccelerated="true"
            android:label="@string/app_name" >
        </activity>
    </application>
</manifest>

         #  단축키
             -  콘텐츠 지원 : Ctrl + Space
             -  매개변수 힌트 : Ctrl + Shift + Space
             -  메소드 생성 : Ctrl + 1
             -  소스코드 정리 : Ctrl + Shift + F
             -  필요한 패키지 삽입 : Ctrl + Shift + O
             -  코드 블록을 주석처리 : Ctrl + Shift + C (범위 지정 후)

- 참고자료

    - Community Support & Resources
        - Videos on Google Developers Live
        - Stack Overflow : Google Maps
        - Code samples on GitHub
    - Related APIs
        - Location APIs
        - Places API
        - Autocomplete API
    - Android Developers : Training
        - Google Maps Image API
        - Street View Image API

    - Google Project Hosting : Open Source for Android

- 참고문헌
    - 안드로이드 애플리케이션 UI 디자인 프로그래밍
    - 안드로이드 프로그래밍의 이해와 실체
    - 그림으로 쉽게 설명하는 안드로이드 프로그래밍
    - 안드로이드 프로그래밍 (눈으로 읽기만 해도 문법이 이해되는)
    - 실습중심 안드로이드 프로그래밍
    - 안드로이드 센서 프로그래밍        


댓글

이 블로그의 인기 게시물

프로젝트 - 안드로이드 : 건국대학교 모바일 앱

PostgreSQL : Update Password