전자공학설계실험 A 보고서 화 6A ~ 9B 박종태교수님 제출기한 ( 화 ) Android I.S 작업환경 Eclipse_Juno ver. 전자공학부 이상엽전자공학부 오윤재전자공학부

Similar documents
[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

어댑터뷰

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

리니어레이아웃 - 2 -

13ÀåÃß°¡ºÐ

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

01장

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

03장

( )부록

SQLite v 소개 ü SQLite 라이브러리를통해완전한관계형데이터베이스 (RDBMS) 기능제공 ü 오픈소스 ü 표준준수 ü 경량 ü 단일계층 2

// 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 c

슬라이드 1

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

슬라이드 1

1. 개요 - 계획서 프로젝트개요프로그램명 : 닥터 119 제작배경애완견을키우는사람들이부득이하게병원에가지못할경우에이앱을통해서자가진단을통해상태의심각성을알수있게되고또가까운동물병원으로갈수있는지도와전화번호를제공한다. 그리고애견다이어리기능을통해애견의성장과정과추억들을저

신림프로그래머_클린코드.key

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

50_1953.pdf

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

PowerPoint Presentation

rmi_박준용_final.PDF

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1

Spring Boot/JDBC JdbcTemplate/CRUD 예제

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

슬라이드 1

안드로이드애플리케이션과통합하는데는자바가편하므로대표적인두가지라이브러리를비교해보자. 자바 ID3 태그라이브러리 jaudiotagger ID3v1, ID3v1.1, Lyrics3v1, Mp3, Mp4 (Mp4 오디오, M4a 지원범위 Lyrics3v2, ID3v2.2, ID

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

슬라이드 1

제11장 프로세스와 쓰레드

안드로이드2_14

12-file.key

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

C++ Programming

<BFF8B5E5B7CEC0CCB5E5322E687770>

01 [ 일기장 ] 애플리케이션프로젝트작성 - [MyDiary] 앱 Mobile Apps >> [MyDiary] 앱프로젝트구조설계 일기장애플리케이션인 [MyDiary] 앱은메인화면과일기장의내용을작성하는화면으로이루어져있다. 화면이 2개라는것은액티비티가 2개이고액티비티에대

헬로, 안드로이드 11 주차 위치파악하기와감지하기 강대기동서대학교컴퓨터정보공학부

Daum 카페

PowerPoint Presentation

학습목표 SQLite 가뭔지알고, 이를사용할줄안다. SQL 의기본적인사용법들을안다. SQLite 을이용해기본적인데이터베이스응용프로그램을작성할수있다. 행을추가하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리를실행하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리결과

교육자료

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

JUNIT 실습및발표

PowerPoint Presentation

슬라이드 1

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

RDS_MAN_NO 도로구간일련번호 NUMBER(12) BSI_INT_SN 기초구간일련번호 NUMBER(10) EQB_MAN_SN 건물군일련번호 NUMBER(10) BULD_SE_CD 건물구분코드 VARCHAR2(1) BULD_MNNM 건물본번 NUMBER(5) BUL

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

¾Èµå·ÎÀÌµå ³¹Àå-Åë.PDF

PowerPoint 프레젠테이션

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

07 자바의 다양한 클래스.key

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

쉽게 풀어쓴 C 프로그래밊

Cluster management software

Spring Data JPA Many To Many 양방향 관계 예제

PowerPoint Presentation

UI TASK & KEY EVENT

2_안드로이드UI

Network Programming

XML Parser

chap 5: Trees

09-interface.key

JMF3_심빈구.PDF

제8장 자바 GUI 프로그래밍 II

슬라이드 1

뷰그룹 ( 레이아웃 ) 레이아웃이름 ( 클래스이름 ) FrameLayout LinearLayout 설명단일객체를표현하기위한프레임. 왼쪽상단에하나의뷰를배치하기때문에나중 에그린객체만보여준다. 수평또는수직으로자손의뷰를배치. 뷰가들어갈만한공간이없을때는자동으로 스크롤바가나타난다

슬라이드 1

C# Programming Guide - Types

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

PowerPoint 프레젠테이션

Design Issues

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

오버라이딩 (Overriding)

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

윈도우시스템프로그래밍

Microsoft PowerPoint - lec2.ppt

BLOB NULL Binary 데이터 값이존재하지않음 테이블의작성예 Create table contact_list( _id integer primary key autoincrement, name text not null, tel text not null default

PowerPoint Template

02 C h a p t e r Java

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도

Microsoft Word - src.doc

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

Transcription:

전자공학설계실험 A 보고서 화 6A ~ 9B 박종태교수님 제출기한 12.12.04 ( 화 ) Android 4.0.1 I.S 작업환경 Eclipse_Juno ver. 전자공학부 2008037262 이상엽전자공학부 2008037233 오윤재전자공학부 2008037298 이준철

AppName Oh! My Taxi 택시요금예상측정기 목차 개발동기 본 App의차별성 기능구상 개발과정 동작원리및사용방법 사용도구및 Open Sources(API, Lib) 결과물및추후개발방향 소스코드세부사항 개발동기 이동수단으로택시를선택할때택시비에대한것이늘고민되고걱정된다. 타지에서방문한초행자이거나, 외국인, 버스운행시간종료시에효율적으로택시비를예상하여자금상황과견주어볼어플리케이션의필요성을느껴개발하게되었다. 번거로움없이지정된위치와현재위치간의계산을위하여각기능을추가하여개발하였다 타 App 과비교 < App > < Call Taxi App > 예 1 : 이동경로나미터기에대해 GPS 를이용하여추적하는 App 예 2 : 택시회사에서콜택시에대한서비스를제공하는 App 본 App 가원하는기능의응용은찾아보기힘들다.

기능구상 ( 제안내용 ) 및개발환경 기능구상 - 지도탑재 - 선택한위치간의최단경로구현 - 경로의거리측정 - 측정된거리를바탕으로요금계산 - 도착지정보를즐겨찾기로등록 - 즐겨찾기정보를이용하여현재위치를읽어동작 개발환경 - 운영체제 : Windows XP Pro sp3 x86(32bit) Android 4.0.1 Icecream Sandwitch (AVD) 개발과정 개괄 - MapView를구현한다음위치를선택하여경로및거리를찾아내어택시요금을계산한다. - 도착지정보를즐겨찾기하여해당위치를출발 / 도착로세팅후현재위치를읽어서위치를선택한다. 단계별세부사항

동작원리및사용방법 동작원리 - 앱이시작되면 Map으로의전환과, 즐겨찾기 (DB) 된 ListView가출력된다. - MapView는 DaumOpenAPI를사용하여띄운다. - DaumMaps의메소드를통해위치정보를출발 / 도착지로설정하고해당정보를 ArrayList 로저장한다. - 각각 [0],[1] Node가출발 / 도착지로, 해당정보를가지고 DaumMap의길찾기항목의경로로전송하여 json 파일을받는다. - json파일을파싱하여 NODE별위치를얻어서 HashMap으로받아온다. - HashMap의내용을 Map에 Point를찍어 PolyLine을구현한다. - 도착지의정보 ( 좌표 ) 는 db에추가하여파일로저장한다. - db( 좌표 ) 를읽어와서도착 / 출발지로설정하고, 현위치를호출하여요금계산을수행한다. 사용방법 - 앱을실행시키면버튼과즐겨찾기가있는메인화면이보인다. < > - 위치지정버튼을누르면 MapView가있는화면으로전환된다. 원하는위치로 Map을이동시킨후길게누르면첫번째터치가출발지로, 두번째터치가도착지로지정된다. 기기에있는 Menu을눌러서도착지정보를즐겨찾기로추가할수있다. < MapView, > < >

- 요금계산버튼을누르면요금계산화면으로전환된다. 해당좌표값과거리가뜨는데, 상단의요금계산버튼을누르면일반택시 ( 할증 ) 모범택시의예상요금을알수있다. 위치확인버튼을누르면이전경로가표시된화면으로전환되고다시보기버튼을누르면경로가사라진화면으로전환된다. < > - 즐겨찾기추가후처음화면으로돌아가면리스트의형태로위치정보가표시됨을알수있다 출발지그림을누르면해당정보가출발지로, 도착지그림을누르면해당정보가도착지로 설정되고, 현재위치와의길찾기부터수행한다. < ListView, main > < >

사용도구및 OpenSources(API, Lib) Mobile DaumMap Open API - Daum에서제공하는 Android용모바일맵오픈 API - MapView, MapPoint, MapPointItem 등의메소드를지원한다. DaumMap Local API - Daum에서제공하는웹용오픈 API(java) - Mobile에서지원하지않는길찾기나좌표계변환기능을지원하고, 본 App에서해당기능을웹에서 Json 파일로받아오는데사용하였다. TransCoord Class - Daum 로컬 API의좌표계변환부분을 Android 용 Class로포팅한것. - Local API 의 Key( 권한 ) 없이사용할수있다. LocationManager - 위치정보를위해 Google에서제공하는 API로 Provider (Network, GPS) 를이용하여받아오는데이용하였다. - 본 App에서는 Network Provider을이용하여기지국정보로부터위치를받아와서사용했다. 결과물및추후개발방향 구현한기능 - 지정된위치에따른경로 ( 길찾기 ) 표시 - db를이용한즐겨찾기항목저장및리스트뷰를이용한즐겨찾기출력 - 네트워크프로바이더를이용한현위치트래킹 - 거리에따른택시요금계산 - 위치에따른경로표시 - 좌표계변환 미구현된기능 - (Reverse) Geo-coding( 주소 좌표 ) 를이용한위치표현 - 시간에따른택시과금적용 개발방향 - Mobile DaumMap API가길찾기기능을제공하지않으므로해당기능들을완전 open source 인 GoogleMaps로포팅 - 미구현기능의추가및예외처리향상 - UI 디자인강화, 도움말항목추가

소스코드 Layout & Manifest - addtemp.xml : 위치정보를추가하는 dialog 구성 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="horizontal" android:id="@+id/lv06"> android:id="@+id/tv_add_name" android:layout_width="wrap_content" android:layout_marginleft="5sp" android:textcolor="#ffff00" android:text=" 명칭 :" /> <EditText android:id="@+id/ev_andd_name" android:layout_marginleft="5sp" android:layout_marginright="5sp" /> </LinearLayout> - calcdistance.xml : 거리계산 Activity 구성 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/back" >// 배경으로이미지를넣음 <Button android:id="@+id/btn_start" android:layout_margintop="10sp" android:layout_marginbottom="10sp" android:text=" 요금계산 " /> android:id="@+id/lblstart_pos" android:text=" 시작지점 :" /> android:id="@+id/start_pos" android:layout_height="50dp" /> android:id="@+id/lblend_pos" android:text=" 끝지점 :" /> android:id="@+id/end_pos" android:layout_height="50dp" /> android:id="@+id/lbldistance_meter" android:text="* 거리 " /> android:id="@+id/distance_meter" android:layout_height="50dp" /> android:id="@+id/lbltaxi_fare" android:text="* 일반택시요금 " /> android:id="@+id/taxi_fare" android:layout_height="50dp" /> android:id="@+id/lbltaxi_faremodel"

android:text="* 모범택시요금 " /> android:id="@+id/taxi_faremodel" android:layout_height="50dp" android:layout_marginbottom="10sp"/> <LinearLayout android:layout_gravity="bottom" android:gravity="center" android:orientation="horizontal" > <Button android:id="@+id/btn_loca" android:layout_width="80sp" android:layout_marginright="20sp" android:text=" 위치확인 " /> <Button android:id="@+id/btn_reloca" android:layout_width="80sp" android:layout_marginright="20sp" android:text=" 다시지정 " /> <Button android:id="@+id/btn_tomain2" android:layout_width="80sp" android:text=" 처음으로 " /> </LinearLayout> </LinearLayout> - favorate.xml : ListView 의항목구성 (Custom ListView) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:gravity="center" android:paddingtop="5px" android:paddingbottom="5px" android:orientation="horizontal" > <LinearLayout android:layout_width="200dp" android:orientation="vertical"> android:id="@+id/location" android:gravity="center_vertical" android:textsize="30px" android:ellipsize="end" />" </LinearLayout> <ImageButton android:id="@+id/btn_bringstart" android:layout_width="60px" android:layout_height="60px" android:layout_gravity="center_vertical" android:src="@drawable/start_2"/>// 이미지버튼으로이미지등록 <ImageButton android:id="@+id/btn_bringend" android:layout_width="60px" android:layout_height="60px" android:paddingleft="60px" android:layout_gravity="center_vertical" android:src="@drawable/end_2"/>" </LinearLayout> - main.xml : main Activity 에대한구성 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/back" >// 레이아웃배경화면등록 <LinearLayout android:orientation="horizontal"

android:gravity="center" android:layout_margintop="10sp"> <Button android:text=" 위치지정 android:layout_width="130sp" android:layout_marginright="20sp" android:id="@+id/btn_showmap"/> <Button android:text=" 종료 " android:layout_width="130sp" android:id="@+id/btn_exit"/> </LinearLayout> android:text="( 즐겨찾기 )" android:textcolor="#010bf2" android:textsize="17dp" android:layout_width="wrap_content" android:layout_margintop="10sp" android:layout_marginleft="20sp"/> <LinearLayout android:layout_marginbottom="10sp" android:layout_marginleft="10sp" android:layout_marginright="10sp" android:layout_margintop="10sp" android:layout_height="fill_parent" android:orientation="vertical"> <ListView android:id="@+id/listview01" android:layout_height="fill_parent" />//ListView 항목 </LinearLayout> </LinearLayout> - map.xml : 지도가나오는 Activity 에대한구성 (DaumMapView 탑재 ) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/linlayout00" android:layout_height="fill_parent" android:orientation="vertical" > <net.daum.mf.map.api.mapview android:id="@+id/dmapview" android:layout_width="match_parent" android:layout_height="400dp" />//DaumMap View 를받아오는항목 <LinearLayout android:gravity="center" android:orientation="horizontal" android:layout_margintop="10sp" > <Button android:id="@+id/btn_distance" android:layout_width="130sp" android:layout_marginright="20sp" android:enabled="false" android:text=" 요금계산 " /> <Button android:id="@+id/btn_tomain" android:layout_width="130sp" android:text=" 처음으로 " /> </LinearLayout> <EditText android:id="@+id/temp" /> </LinearLayout>

Class(java) - calc.java : 계산 Activity 를구성하는 class package com.android.taximap; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.textview; import android.widget.toast; public class calc extends Activity{ Button btn_start,btn_loca,btn_tomain2,btn_reloca; TextView TVstart_pos, TVend_pos, TVdistance_meter, TVtaxi_fare,TVtaxi_faremodel; int fare, fareplus, faremodel; int distance_meter=jsondecode.distance_temp; double xpoint_start,ypoint_start, xpoint_end,ypoint_end;// 계산과관련된변수들 @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.calcdistance); btn_start=(button)findviewbyid(r.id.btn_start); btn_loca=(button)findviewbyid(r.id.btn_loca); btn_tomain2=(button)findviewbyid(r.id.btn_tomain2); btn_reloca=(button)findviewbyid(r.id.btn_reloca); TVstart_pos=(TextView)findViewById(R.id.start_pos); TVend_pos=(TextView)findViewById(R.id.end_pos); TVdistance_meter=(TextView)findViewById(R.id.distance_meter); TVtaxi_fare=(TextView)findViewById(R.id.taxi_fare); TVtaxi_faremodel=(TextView)findViewById(R.id.taxi_faremodel); xpoint_start=daummap.alitems.get(0).getmappoint().getmappointwcongcoord().x; //DaumMap Class 에 alitem 의 ArrayList 0 번 index( 출발지 ) 저장된값을가지고옴 ypoint_start=daummap.alitems.get(0).getmappoint().getmappointwcongcoord().y; TVstart_pos.setText(" "+xpoint_start + ", " + ypoint_start); xpoint_end=daummap.alitems.get(1).getmappoint().getmappointwcongcoord().x; ypoint_end=daummap.alitems.get(1).getmappoint().getmappointwcongcoord().y; TVend_pos.setText(" "+xpoint_end + ", " + ypoint_end); TVdistance_meter.setText(" "+distance_meter + " M ("+(double)distance_meter/1000 +" Km )"); // 대구시요금체계 if (distance_meter < 2000) { fare = 2200; fareplus = 2640; faremodel = 4000; else if (distance_meter >= 2000 & distance_meter < 3000) { fare = (int) (2200 + (distance_meter - 2000) / 150 * 100); fareplus = (int) (2640 + (distance_meter - 2000) / 150 * 120); faremodel = (int) 4000; else if (distance_meter >= 3000) { fare = (int) (2200 + (distance_meter - 2000) / 150 * 100); fareplus = (int) (2640 + (distance_meter - 2000) / 150 * 120); faremodel = (int) (4000 + (distance_meter - 3000) / 150 * 200); // 버튼눌럿을때 btn_start.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { TVtaxi_fare.setText(" 비할증시 : " + fare + " 원," + " " + " 할증시 :" + fareplus + " 원 "); TVtaxi_faremodel.setText(faremodel + " 원 "); ); btn_tomain2.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { DaumMap.alitems.clear(); DaumMap._ID=0;// 동작구별을위한식별자를초기값으로세팅 Intent intent = new Intent(calc.this,MainActivity.class); startactivity(intent); Toast.makeText(getBaseContext(), " 처음화면으로...", Toast.LENGTH_SHORT).show();

); btn_reloca.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { DaumMap.alitems.clear(); DaumMap._ID=0; Intent intent = new Intent(calc.this,DaumMap.class); startactivity(intent); ); btn_loca.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { onbackpressed();// 이전으로돌아가기위해 back 버튼을누른효과 ); - Database.java : DB 를구성하는내용에대한 class package com.android.taximap; import android.provider.basecolumns;//basecolumns 를상속받아 DB 를구성한다. public final class Database { public static final class creatdb implements BaseColumns{ public static final String ADDRESS="address"; public static final String XPOINT="xpoint"; public static final String YPOINT="ypoint"; public static final String _TABLE_NAME="locainfo"; public static final String CREATE= "create table "+_TABLE_NAME+"(" +_ID+" integer primary key autoincrement, " +ADDRESS+" text not null, " +XPOINT+" text not null, " +YPOINT+" text not null );"; //creatdb 클래스로각 Column 을정의하고구성한다. _ID 는자동으로증가하도록설정한다.( 입력받지않음 ) - DaumMap.java : MapView 가있는 Activity 를구성하는 class package com.android.taximap; import java.util.arraylist; import kr.hyosang.coordinate.coordpoint; import kr.hyosang.coordinate.transcoord; import net.daum.mf.map.api.mappoiitem; import net.daum.mf.map.api.mappoint; import net.daum.mf.map.api.mappolyline; import net.daum.mf.map.api.mapview; import android.app.activity; import android.app.alertdialog; import android.content.context; import android.content.dialoginterface; import android.content.intent; import android.graphics.color; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.os.bundle; import android.util.log; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.textview; import android.widget.toast; public class DaumMap extends Activity implements MapView.MapViewEventListener { public jsondecode jsd=new jsondecode();//json 파싱을위한인스턴스선언 dbopenhelper mdbopenhelper;//db 를컨트롤하기위해선언 LocationManager locationmanager=null;// 위치정보를받아오기위해선언 Location here=null;// 위치정보를저장하기위해선언 static double xpoint=0,ypoint=0;// 위치정보를 (WCONG) 좌표계로저장 double xpoint_2=0,ypoint_2=0;// 받아온위치정보를저장하기위한변수

static public int _ID;// 기능구별을위한식별자 static public ArrayList<MapPOIItem> alitems;// 맵포인트를찍기위해 list 형태로선언 public MapPoint.PlainCoordinate Pcord; public MapPoint mappoint; public MapView mapview; Button btn_fare,btn_tomain; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.map); mapview=(mapview)findviewbyid(r.id.dmapview); mapview.setdaummapapikey("9a58163f57b1c380c276ec1370bd6014404cb66c"); //DaumMap API 사용을위한인증값. mapview.setmapvieweventlistener(this); removeitems(0);//mapview 에찍힌포인트와경로를제거하는메서드 btn_fare=(button)findviewbyid(r.id.btn_distance); btn_tomain=(button)findviewbyid(r.id.btn_tomain); alitems=new ArrayList<MapPOIItem> (0); btn_fare.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Intent intent = new Intent(DaumMap.this,calc.class); startactivity(intent); ); btn_tomain.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { removeitems(0); alitems.clear(); DaumMap._ID=0; Intent intent = new Intent(DaumMap.this,MainActivity.class); startactivity(intent);// 인식값및모든변수를초기화하고이전화면으로전환 ); Log.d("loca","_ID 비교전 : "+_ID); locationmanager=(locationmanager)getsystemservice(context.location_service); //LocationManager 변수선언, 지역정보를사용함 if(_id==1){// 식별값이 1( 출발지로선언 ) 일때 set_items(xpoint,ypoint,mapview,_id);// 식별값이 1( 출발지로선언 ) 일때 setgpsloca(_id);// 현재위치메서드호출 else if(_id==2){// 식별값이 2( 도착지로선언 ) 일때 setgpsloca(_id);// 현재위치를먼저찍고 set_items(xpoint,ypoint,mapview,_id);// 저장된좌표를도착지로찍음. else {// 아무설정이없을때초기화 _ID=0; public void removeitems(int cont){ mapview.removeallpoiitems();//poiitems메서드로찍힌 Polyline과포인트를삭제 mapview.removeallpolylines(); public void onmapviewcenterpointmoved(mapview mapview, MapPoint mapcenterpoint) { // 맵뷰중심위치가변했을때의값 (default) public void onmapviewdoubletapped(mapview mapview, MapPoint mappoint) { // 더블클릭되엇을때의값 (default로확대 / 축소를수행 ) public void onmapviewinitialized(mapview mapview) { //mapview가띄워졌을때초기위치에대한메소드 mapview.setmapcenterpointandzoomlevel(mappoint.mappointwithgeocoord(35.8875,128.6117),5,true); // 초기위치를경북대의 Geo좌표계로선언 public void onmapviewlongpressed(mapview mapview, MapPoint mappoint) { // 길게터치가발생했을때 // 좌표값읽기 MapPoint.PlainCoordinate mappointgeo = mappoint.getmappointwcongcoord(); double xpoint = mappointgeo.x;// 해당위치의 x(wcong좌표 ) 를 xpoint에저장 double ypoint = mappointgeo.y; set_items(xpoint,ypoint,mapview,0); // 저장된좌표로포인트를찍는메서드를호출 Toast.makeText(getBaseContext(), String.format(" 위치선택 ( %.1f,.%.1f)", xpoint,ypoint),toast.length_short).show();// 토스트메시지로출력 public void onmapviewsingletapped(mapview mapview, MapPoint mappoint) { public void onmapviewzoomlevelchanged(mapview mapview, int zoomlevel) { public void set_items(double xpoint, double ypoint,mapview mapview,int id){ // 포인트를찍는메서드 MapPOIItem item=new MapPOIItem(); item.setdraggable(false); // 움직불가능마커표시 if((id==1 id==0)&&alitems.size()==0){ // 출발지로선언되거나아무설정이없고저장된값이없을때동작

item.setitemname(" 출발지 "); item.setmarkertype(mappoiitem.markertype.bluepin); item.setmappoint(mappoint.mappointwithwcongcoord(xpoint, ypoint)); item.setshowanimationtype(mappoiitem.showanimationtype.springfromground); mapview.addpoiitem(item); alitems.add(item); // 출발지로해당좌표를찍고 ArrayList(0) 번인덱스에추가한다. else if((id==2 id==0)&&alitems.size()==1){ // 도착지로선언되거나아무설정없이이미 ArrayList 에저장된값이있을때 item.setitemname(" 도착지 "); item.setmarkertype(mappoiitem.markertype.redpin); item.setmappoint(mappoint.mappointwithwcongcoord(xpoint, ypoint)); item.setshowanimationtype(mappoiitem.showanimationtype.springfromground); mapview.addpoiitem(item); btn_fare.setenabled(true); alitems.add(item); jsd.getroute(); // 값을추가하고루트를받아오는메서드를호출 DRaw(mapView); // 루트를그리는메서드를호출 public void DRaw(MapView mapview){ // 경로를그리는메서드 MapPolyline polyline = new MapPolyline(jsondecode.list_loc_point.size()); polyline.setlinecolor(color.argb(128, 0, 0, 255)); for(int i=0;i<jsondecode.list_loc_point.size();i++){ //json 을 parsing 해서저장된 AraayList 의크기만큼반복수행 double x = Double.valueOf(jsondecode.list_loc_point.get(i).get("xpoint"+i)); double y = Double.valueOf(jsondecode.list_loc_point.get(i).get("ypoint"+i)); //ArrayList<HashMap<"key","value">> 의값을각각읽어와서변수로저장하고 polyline.addpoint(mappoint.mappointwithwcongcoord(x, y)); // 해당포인트를추가한다. jsondecode.list_loc_point.clear(); // 기존포인트들을제거하고 mapview.addpolyline(polyline); // 맵뷰에해당포인트들을추가 ( 표시한다 ) mapview.fitmapviewareatoshowpolyline(polyline); // 경로가다보일수있게맵스케일을자동조정한다. LocationListener locationlistener=new LocationListener(){ // 위치정보에대한리스너 public void onlocationchanged(location location) { // 위치가변경되었을때 CoordPoint pt = new CoordPoint(location.getLongitude(),location.getLatitude()); CoordPoint tpt=transcoord.gettranscoord(pt, TransCoord.COORD_TYPE_WGS84, TransCoord.COORD_TYPE_WCONGNAMUL); //location 에저장된위치정보를콩나물좌표계로변환한다. xpoint_2=tpt.x; ypoint_2=tpt.y; public void onproviderdisabled(string provider) { // TODO Auto-generated method stub //Provider 가종료되었을때 public void onproviderenabled(string provider) { // TODO Auto-generated method stub //Provider 가활성화되었을때 public void onstatuschanged(string provider, int status, Bundle extras) { // TODO Auto-generated method stub //Provider 상태가변화되었을때 ; public void setgpsloca(int id){ // 위치정보를받는메서드 MapPoint map2; Log.d("loca"," 커런트로케이션이벤트호출전 : "+", "+xpoint+", "+ypoint+"id="+id); locationmanager.requestlocationupdates(locationmanager.network_provider, 5000, 1, this.locationlistener); // 위치정보변화를요구한다.(NETWORK_PROVIDER: 네트워크정보로부터위치전달 ) 5 초만큼 1 미터최소단위로 here=locationmanager.getlastknownlocation(locationmanager.network_provider); // 최근에획득한위치정보를 here 에저장한다. if(here!=null){ //Here 가값이있게되면 CoordPoint pt = new CoordPoint(here.getLongitude(),here.getLatitude()); CoordPoint tpt=transcoord.gettranscoord(pt, TransCoord.COORD_TYPE_WGS84, TransCoord.COORD_TYPE_WCONGNAMUL);

xpoint_2=tpt.x; ypoint_2=tpt.y; // 최근위치로포인트설정 map2 = MapPoint.mapPointWithWCONGCoord(xpoint_2, ypoint_2); // 해당포인트를맵포인트로지정 if(id==1){ set_items(map2.getmappointwcongcoord().x,map2.getmappointwcongcoord().y,this.mapview,2); // 출발지로되어있으면호출한현재위치를도착지로표기한다 else if(id==2){ set_items(map2.getmappointwcongcoord().x,map2.getmappointwcongcoord().y,this.mapview,1); // 도착지로되어있으면호출위치를출발지로표기한다. else{ set_items(map2.getmappointwcongcoord().x,map2.getmappointwcongcoord().y,this.mapview,0); // 둘다아니면설정이없이표기한다. try{ Thread.sleep(10000); //10 초만큼딜레이를둔다. catch(exception e){ Log.d("loca"," 딜레이예외 "); locationmanager.removeupdates(locationlistener); // 위치정보를받아오는것을종료한다. static public void setmappoint(favorate a, int id){ // 맵포인트를세팅하는메서드 DaumMap.xpoint=a.xpoint; DaumMap.ypoint=a.ypoint; DaumMap._ID=id; @Override public boolean oncreateoptionsmenu(menu menu) { menu.add(0, Menu.FIRST+1, Menu.NONE, " 즐겨찾기추가 "); return super.oncreateoptionsmenu(menu); // 메뉴버튼을눌렀을때옵션메뉴세팅 @Override public boolean onoptionsitemselected(menuitem item) { // 다이아로그창을띄우기위해레이아웃을객채화한다. LayoutInflater inflater=layoutinflater.from(this); // 레이아웃객채화하는 layoutinflater inflater 선언 View addview=inflater.inflate(r.layout.addtemp, null); final TextView tview=(textview)addview.findviewbyid(r.id.tv_add_name); final EditText medit=(edittext)addview.findviewbyid(r.id.ev_andd_name); Log.d("dbdata", " 다이아로그전 "); AlertDialog.Builder dlg=new AlertDialog.Builder(this); mdbopenhelper=new dbopenhelper(this); mdbopenhelper.open(); Log.d("dbdata", " 헬퍼호출 "); dlg.settitle(" 도착지위치정보추가 ").setmessage(" 도착지의위치정보를 \n"+" 즐겨찾기하시겠습니까?").setView(addView).setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { Log.d("dbdata", "values 생성전 "); Log.d("dbdata", "alitem.get(1).x : "+alitems.get(1).getmappoint().getmappointwcongcoord().x); Log.d("dbdata"," 텍스트입력된거 : "+medit.gettext().tostring()); mdbopenhelper.insertcolumn(medit.gettext().tostring(), alitems.get(1).getmappoint().getmappointwcongcoord().x, alitems.get(1).getmappoint().getmappointwcongcoord().y); //Alitems 에저장된도착지정보를 db 로저장한다. mdbopenhelper.close(); Toast.makeText(getBaseContext(), " 위치정보가즐겨찾기되었습니다.", Toast.LENGTH_SHORT).show(); ).setnegativebutton("cancel", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { // TODO Auto-generated method stub ).show(); return super.onoptionsitemselected(item); - dbopenhelper : dbopenhelper(sqliteopenhelper 를상속받아구현 ) package com.android.taximap;

import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlexception; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqlitedatabase.cursorfactory; import android.database.sqlite.sqliteopenhelper; public class dbopenhelper{ private static final String DATABASE_NAME = "adress.db";//db 이름설정 private static final int DATABASE_VERSION=1;//dB 버전 : 업데이트를위해사용 public static SQLiteDatabase mdb; private DatabaseHelper mdbhelper; private Context mctx; public class DatabaseHelper extends SQLiteOpenHelper{//SQLiteOpenHelper 상속받아구현 public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); @Override public void oncreate(sqlitedatabase db) { db.execsql(database.creatdb.create); @Override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { db.execsql("drop TABLE IF EXISTS "+Database.creatDB._TABLE_NAME); oncreate(db); public dbopenhelper(context context){ this.mctx=context; public dbopenhelper open() throws SQLException{ mdbhelper=new DatabaseHelper(mCtx,DATABASE_NAME,null,DATABASE_VERSION); mdb=mdbhelper.getwritabledatabase(); return this; public void close(){ mdb.close(); public long insertcolumn(string address,double xpoint, double ypoint){// 추가에관한메서드 ContentValues values = new ContentValues(); values.put(database.creatdb.address, address); values.put(database.creatdb.xpoint, xpoint); values.put(database.creatdb.ypoint, ypoint); return mdb.insert(database.creatdb._table_name, null, values); public boolean updatecolumn(long id, String address, double xpoint, double ypoint){// 업데이트에관한메서드 ContentValues values = new ContentValues(); values.put(database.creatdb.address, address); values.put(database.creatdb.xpoint, xpoint); values.put(database.creatdb.ypoint, ypoint); return mdb.update(database.creatdb._table_name, values, "_id="+id, null)>0; public boolean deletecolumn(long id){// 삭제에관한메서드 return mdb.delete(database.creatdb._table_name, "_id="+id, null)>0; public Cursor getallcolumns(){ return mdb.query(database.creatdb._table_name, null, null, null, null, null, null); public Cursor getcolumn(long id){ Cursor c=mdb.query(database.creatdb._table_name, null, "_id="+id, null, null, null, null); if(c!=null && c.getcount()!=0){ c.movetofirst(); return c; - Favorate.java : list 를구성하는항목에대한 class package com.android.taximap; public class Favorate { public int _id; public String locate; public double xpoint; public double ypoint; public Favorate(int _id, String locate,double xpoint,double ypoint){ this._id=_id;

this.locate=locate; this.xpoint=xpoint; this.ypoint=ypoint; public String getloca(){ return this.locate; public double getxpoint(){ return this.xpoint; public double getypoint(){ return this.ypoint; - FavorateAdapter.java : CustomListView 를구현하기위한 CustomAdapter class package com.android.taximap; import java.util.arraylist; import android.content.context; import android.content.intent; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.view.onclicklistener; import android.view.viewgroup; import android.widget.arrayadapter; import android.widget.imagebutton; import android.widget.textview; public class FavorateAdapter extends ArrayAdapter<Favorate>{// 커스텀어답터를구현하기위해 ArrayAdapter 을상속 private Context mcontext; private int mresource; private ArrayList<Favorate> Fitems; private LayoutInflater vi;// 레이아웃을객체화 public FavorateAdapter(Context context, int textviewresid, ArrayList<Favorate> Fitems){ super(context, textviewresid, Fitems); this.fitems=fitems; this.mcontext=context; this.mresource=textviewresid; this.vi=(layoutinflater)getcontext().getsystemservice(context.layout_inflater_service); @Override public View getview(int position, View convertview, ViewGroup parent) { View v=convertview; if(v==null){ v=vi.inflate(r.layout.favorate, null);// 레이아웃에뷰어가없으면 favorate 를객체화하여가져온다 Favorate p=fitems.get(position); if(p!=null){ TextView Loca=(TextView)v.findViewById(R.id.location); Loca.setText(p.getLoca()); ImageButton bring_start=(imagebutton)v.findviewbyid(r.id.btn_bringstart); ImageButton bring_end=(imagebutton)v.findviewbyid(r.id.btn_bringend); bring_start.setfocusable(false); bring_end.setfocusable(false); bring_start.settag(position); bring_end.settag(position); bring_start.setonclicklistener(new OnClickListener(){ public void onclick(view v) { int position=integer.parseint(v.gettag().tostring()); Favorate p = Fitems.get(position); if(p!=null){ // 출발지로선언 // 이미지버튼이눌렸을때맵포인트를해당정보를새팅하고화면전환 DaumMap.setmapPoint(p,1); Intent intent = new Intent(mContext,DaumMap.class); mcontext.startactivity(intent); ); bring_end.setonclicklistener(new OnClickListener(){ public void onclick(view v) {

int position=integer.parseint(v.gettag().tostring()); Favorate p = Fitems.get(position); if(p!=null){ // 도착지로선언 // 즐겨찾기가져오기 double xpoint, ypoint; xpoint=fitems.get(position).xpoint; ypoint=fitems.get(position).ypoint; DaumMap.setmapPoint(p,2); Intent intent = new Intent(mContext,DaumMap.class); mcontext.startactivity(intent); ); return v; public void setarraylist(arraylist<favorate> array){ this.fitems=array; public ArrayList<Favorate> getarraylist(){ return this.fitems; - jsondecode.java : url 을구성하여전송하고 son 파일을받아 parsing 하는 class package com.android.taximap; import java.io.bufferedreader; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.url; import java.util.arraylist; import java.util.hashmap; import java.util.list; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject; import android.content.context; import android.util.log; public class jsondecode { BufferedReader buffer=null;//json 을버퍼형태로가져오기위해선언 Context mcontext; static int distance_temp=0; static public List<HashMap<String, String>> list_loc_point = new ArrayList<HashMap<String,String>>(); HashMap<String, String> loc_point = new HashMap<String, String>(); // 값을저장하기위해 ArrayList<HashMap<"key","value">> 로선언 URL url=null; HttpURLConnection urlconnection=null; //URL 로값을주고받기위해선언 StringBuffer json_data=new StringBuffer(); //json 파일을저장하기위해선언 String Temp=null; public String geturl(){ String urlstring = new String(); urlstring="http://map.daum.net/route/route.json?routemode=shortest_realtime&routeoption=none"+"&sx =".replaceall("\\p{space","") +(Double.toString(DaumMap.alitems.get(0).getMapPoint().getMapPointWCONGCoord().x).replaceAll("\\p{Space","")) +"&sy=".replaceall("\\p{space","") +(Double.toString(DaumMap.alitems.get(0).getMapPoint().getMapPointWCONGCoord().y).replaceAll("\\p{Space","")) +"&ex=".replaceall("\\p{space","") +(Double.toString(DaumMap.alitems.get(1).getMapPoint().getMapPointWCONGCoord().x).replaceAll("\\p{Space","")) +"&ey=".replaceall("\\p{space","") +(Double.toString(DaumMap.alitems.get(1).getMapPoint().getMapPointWCONGCoord().y).replaceAll("\\p{Space","")).replaceAll("\\p{Space",""); return urlstring; // 저장된경로로 json 파일을받기위한 url 을구성

public void getjson(){ //json 을가져오는메서드 String line=null; String temp=geturl().tostring(); String mapurl=temp; try { url = new URL(mapURL); urlconnection=(httpurlconnection)url.openconnection(); Temp=urlConnection.toString(); buffer = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),"EUC-KR"),8192); //Url 스트림을열어 EUC-KR 로인코딩하여값을버퍼로읽어옴 while((line=buffer.readline())!=null){ json_data.append(line); // 버퍼의크기가다할때까지문장단위로 json_data 에붙임 urlconnection.disconnect(); //url 스트림을닫음 buffer.close(); // 버퍼를종료 catch (Exception e){ finally{ try{ buffer.close(); catch (Exception e2) { // 예외처리 public void parseforjson() throws JSONException{ //jasonparsing 을위한메서드 //json 구조를들어가기위해차례대로선언 JSONObject json = new JSONObject(json_data.toString()); json=json.getjsonobject("car"); distance_temp=integer.valueof(json.getstring("totallength")); JSONArray nodes_temp= json.getjsonarray("nodes"); //nodes 에있는정보를가지고옴 for(int i = 0; i < nodes_temp.length(); i++) { JSONObject jtemp=nodes_temp.getjsonobject(i); loc_point.put("ypoint"+i, jtemp.getstring("y")); loc_point.put("xpoint"+i, jtemp.getstring("x")); list_loc_point.add(loc_point); // 키값을읽어서값으로 ArrayList 에저장 public void getroute(){ //json 파일을가지고와서파싱까지수행하는메서드이메서드로값을얻는다. getjson(); try{ parseforjson(); catch (JSONException e){ Log.e(TAG,"getRoute() : "+e.tostring()); - MainActivity.java : 최초시작 Activity package com.android.taximap; import java.util.arraylist; import android.app.activity; import android.app.alertdialog; import android.content.dialoginterface; import android.content.intent; import android.database.cursor; import android.os.bundle; import android.view.view; import android.widget.adapterview; import android.widget.adapterview.onitemlongclicklistener; import android.widget.button; import android.widget.listview; import android.widget.toast; public class MainActivity extends Activity { Button btn_map,btn_exit;

ListView lv01; ArrayList<Favorate> mfavorarray; Favorate mfavorate; FavorateAdapter lvadapter; dbopenhelper mdbopenhelper; Cursor mcursor; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); btn_map=(button)findviewbyid(r.id.btn_showmap); btn_exit=(button)findviewbyid(r.id.btn_exit); lv01=(listview)findviewbyid(r.id.listview01); btn_map.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Intent intent=new Intent(MainActivity.this,DaumMap.class); startactivity(intent); Toast.makeText(getBaseContext(), " 위치지정화면으로이동합니다 ", Toast.LENGTH_SHORT).show(); ); btn_exit.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Toast.makeText(getBaseContext(), " 종료합니다.", Toast.LENGTH_SHORT).show(); Kill_app(); ); mfavorarray=new ArrayList<Favorate>();// 리스트뷰를구현하기위해 mdbopenhelper=new dbopenhelper(this); mdbopenhelper.open();//db 제어를위한헬퍼를개방 CursortoArray();// 리스트뷰에 db 내용을가져오기위한커서 lvadapter=new FavorateAdapter(this, R.layout.favorate, mfavorarray);// 커스텀어답터선언 lv01.setadapter(lvadapter);// 어답터를셋팅 lv01.setonitemlongclicklistener(new OnItemLongClickListener(){ // 리스트의아이템이선택되었을때의동작 public boolean onitemlongclick(adapterview<?> arg0, View arg1, final int position, long arg3) { final boolean result = mdbopenhelper.deletecolumn(position+1); AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this); dlg.settitle(" 삭제확인 ").setmessage(" 삭제하시겠습니까?").setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { if(result){ mfavorarray.remove(position); lvadapter.setarraylist(mfavorarray); lvadapter.notifydatasetchanged(); Toast.makeText(getBaseContext(), " 즐겨찾기항목삭제..", Toast.LENGTH_SHORT).show(); else{ Toast.makeText(getBaseContext(), "Index 오류 ", Toast.LENGTH_SHORT).show(); ).setnegativebutton("cancel",new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { // TODO Auto-generated method stub ); ).show(); return false; protected void Kill_app() { movetasktoback(true); android.os.process.killprocess(android.os.process.mypid()); // 프로세스킬시키는함수 private void CursortoArray(){ mcursor=null; mcursor=mdbopenhelper.getallcolumns(); while(mcursor.movetonext()){ mfavorate=new Favorate(

mcursor.close(); //db 부터커서가가르키는것을리스트로가지고온다. mcursor.getint(mcursor.getcolumnindex("_id")), mcursor.getstring(mcursor.getcolumnindex("address")), mcursor.getdouble(mcursor.getcolumnindex("xpoint")), mcursor.getdouble(mcursor.getcolumnindex("ypoint")) ); mfavorarray.add(mfavorate);