Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스마트폰
- push
- error
- UITableView
- 아이폰7
- swift
- LG유플러스
- 앱스토어
- IOS
- loop
- Xcode
- 신도림 테크노마트
- 포켓볼
- simulator
- Bitcode
- 포켓몬 GO
- 보라카이
- 페이백
- UIView
- setting
- afterdelay
- GCD
- Example
- Check
- 신도림
- 얻는법
- 공략
- swift3
- 샘플
- 해몽
Archives
- Today
- Total
도래울
Android - Google Maps API(MapView)를 이용한 애플리케이션 제작 본문
서론
- 위치 기반 서비스(LBS:Location Based Service)에 대해
(개인적이 주관으로 기술한 내용)
스마트 폰에서 유용하다라고 생각하는 것 중에 위치 기반 기술, 맵 정보, 그리고 여기에 다른 유용한 정보를 융합하여 더 나은 정보를 제공하는 애플리케이션이 상당 부분을 차지합니다. 사례를 보면 자기 주위 가장 싼 주유소를 찾아주는 앱(App.: Application 의 줄임말 ), 특정 책이 있는 서점을 찾아주는 앱 등이 이를 대표하는 앱입니다.
[휴대전화의 위치 기반(맵정보 활용) 서비스의 특징 및 문제점]
- 하나 이상의 서비스를 융합하여 새로운 서비스 제공하는 Mashup 형태
- 프라이버시 침해 우려(맵서비스 제공자에게 개인의 위치정보 전달)
- 위치정보(맵정보)와 융합할 소스 정보 제공자에 의존적
위치(맵정보)와 융합할 정보를 공급자가 차단하는 경우 서비스 불가.
이런 몇 가지 문제점이 보완된다면 더욱 다양한 방향으로 활용될 것이기 때문에 위치기반(맵정보) 서비스
말로 스마트 폰에 핵심라고 할 수 있습니다.
1. 위치 기반 애플리케이션(Location Based Application)
위치 기반 애플리케이션은 무선 기기내에 GPS(Global Positioning System) 등을 이용하여 사용자의 현재 위치 정보(맵 정보)에 따르는 다른 유용한 정보를 결합하여 새로운 기능를 제공하는 애플리케이션입니다. (제나름대로 정의한 것)
이런 애플리케이션을 안드로이드에서 Google Maps API와 android.location Library를 이용하며 아주 손쉽게 제작이 가능합니다.(리스트1-1)
[리스트1-1]위치 기반 관련 패키지(라이브러리)
com.google.android.maps Package
Google Maps Service에 접근하는 인터페이스를 제공하는 패키지로써 주요 클래스는 맵을 표시하는 MapView 클래스와 MapView를 Activity를 관리하는 MapActivity 클래스 등으로 구성되어 있습니다.
android.location Package
GPS나 무선랜 등의 정보를 이용하여 휴대전화의 현재 위치 정보(위도,경도)를 얻기 위한 기능을 제공하는 패키지로써 시스템의 위치 서비스(Location Service)의 접근을 제공하는 LocationManager 클래스, 위치정보와 주소정보를 변환하는 Geocoder 클래스, GPS엔진 상태를 표현하는 GpsStatus 클래스 등으로 구성되어 있습니다.
*** 이제 구글맵을 연동하는 안드로이드 애플리케이션을 제작 방법을 소개하려고 합니다. 시작 전에 컴퓨터에 안드로이드 개발환경 구축 전인 경우 지금부터 과정을 진행할 수가 없습니다. 만일 이런 경우의 독자라면 "안드로이드(Android) 개발환경 구축하기" 포스트를 참고하여Android - Google Maps API(MapView)를 이용한 애플리케이션 제작 개발환경을 먼저 구축하고 다음 내용 진행하시기 바랍니다.
2. Google Maps API Key 발급받기
Google Maps 데이터에 접근하는 Android에 애플리케이션을 제작하기 위해서 Google Maps service에 등록 및 약관 동의 절차(Maps API Key Signup)를 거쳐야 합니다. 참고로 Maps API Key 발급은 무료이며, 로그인 가능한 구글 계정이 필요합니다.
1) SDK 디버그 서명 증명서의 MD5 핑거프린트(Fingerprint:지문) 확인하기
디버그 서명 증명서(debug.keystore 파일)는 Android SDK가 자동으로 생성하며, 개발환경의OS마다 다른 경로가 생성됩니다. (리스트2-1 참고)
[리스트2-1]OS별 디버그 서명 증명서(dubug.keystore) 저장 경로
Win Vista: C:\Users\%username%\.android\debug.keystore
Win XP: C:\Documents and Settings\%username%\.android\debug.keystore
OS X and Linux: ~/.android/debug.keystore
debug.keystore의 저장된 위치를 확인했으면 썬 JDK에 포함되어 있는 keytool를 이용하여 핑커프린트 확인할 수 있다. ([예제2-1])
[예제2-1]keytool로 Fingerprint를 확인(붉은색 글씨가 Fingerprint) (Vista환경예시)
C:\Users\test\.android>dir *.keystore
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: BXXX-XXXX
C:\Users\test\.android 디렉터리
2010-02-06 오후 09:07 1,268 debug.keystore
1개 파일 1,268 바이트
0개 디렉터리 X,XXX,654,592 바이트 남음
C:\Users\test\.android>"%java_home%\bin\keytool.exe" -list -keystore debug.keystore -keypas
s android -storepass android -alias androiddebugkey
androiddebugkey, 2010. 2. 6, PrivateKeyEntry,
인증서 지문(MD5): AA:22:33:F7:32:12:22:EC:68:93:8B:55:44:69:ED:47
2) 구글 지도 API 가입하기(Maps API Key Signup)
다음 URL 이동하여 위에서 확인한 인증서 지문(MD5) 값을 복사하여 [My certificate's MD5 fingerprint] 입력란에 넣고 Generate API Key를 클릭합니다. 여기서 구글 로그인 이 필요합니다.
[그림2-1] Maps API Key Signup - Start Webpage
[그림2-2] Maps API Key Signup - Result Webpage
발급된 사용자 키를 다른 곳에 잘 저장해 두고 애플리케이션 제작하는 단계로 넘어갑니다.
3. Google Maps API 이용한 애플리케이션 제작하기 (GoogleMapHello)
Google Maps API를 이용하여 맵 정보를 표시하는 간단한 애플리케이션 만들어 보겠습니다.
1) Eclipse 에서 GoogleMapHello 프로젝트를 생성하기
[그림3-1]New Android Project : GoogleMapHello
2) Maps library를 사용 설정 및 인터넷 접속 허용 설정하기(AndroidManifest.xml)
Standard Android library에는 Maps library가 포함되어 있지 않으므로 사용하려면 별도의 설정이 필요합니다. 또한 인터넷에 접속하여 Maps data를 조회하려면 INTERNET Permission을 지정해야 합니다.
[예제3-1] GoogleMapHello의 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tobe30.sample.googlemaphello"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".GoogleMapHello"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--map library 사용 설정-->
<uses-library android:name="com.google.android.maps" />
</application>
<uses-sdk android:minSdkVersion="7" />
<!--INTERNET Permission 지정-->
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
3) 애플리케이션의 레이아웃 작성하기 (res/layout/main.xml)
com.google.android.maps.MapView 클래스를 레이아웃에 추가한다.
[예제3-2] GoogleMapHello의 res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="043KehnZyxJK7Ny0hTKJPBcp_rihr6VLCMoDQeA"
/>
android:clickable 속성은 사용자의 상호작용 허용 여부를 설정하는 것입니다. 이것을 false로 설정하는 경우 터칭(에뮬레이터에서는 마우스로)으로 맵을 조작할 수 없게 됩니다.
android:apiKey에는 위에 "2. Google Maps API Key 발급받기" 과정을 통해 얻은 자신의 Maps API Key를 설정합니다.
4) 애플리케이션의 Activity를 구현하기 (GoogleMapHello.java)
MapActivity 클래스는 MapView에 지도 표시를 관리하는 역할을 합니다. 그래서GoogleMapHello Activity는 MapActivity 클래스를 상속받아 구현해야 합니다.
[예제3-3]GoogleMapHello Activity 소스
package tobe30.sample.googlemaphello;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
// GoogleMapHello 는 MapActivity를 상속
public class GoogleMapHello extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true); //줌컨트롤을 활성
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
isRouteDisplayed() 메소드는 MapActivity의 추상 메소드이므로 반드시 구현해야 합니다.
isRouteDisplayed() 메소드는
애플리케이션에 라우트 정보를 표시할 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
5) 실행
Eclipse > Run > Run as > Android Application
[그림3-2]GoogleMapHello 실행화면
※ GoogleMapHello는 Map API를 이용하는 애플리케이션이므로 실행할 때 타켓이 Google APIs(Google Inc.) - API Level n으로 설정된 ADV로 실행해야 한다.(그림3-3)
[그림3-3]Google APIs(Google Inc.) - API Level n 타켓의 AVD 생성
참고
끝!
노트북에서 해보느라고 아주 죽는 줄 알았습니다. 노트북이 사양이 좀 딸려서 애플리케이션 한번 실행하는데 꽤나 느립니다. 역시 최고에 장벽은 영어! 나에게는 존재하지 않는 영어 실력으로 영문 문서 읽어가면서 하려니 포스팅 하나 작성하는데 하루 종일 걸렸습니다. 나름 최선을 다해 자세히 설명을 하려고 노력했는데 보시는 분들이 얼마나 잘 이해하실지.....그리고 이 글은 맘으로대 퍼가셔도 상관없습니다. 출처만 분명히 밝혀주시면 됩니다.
'개발 > Android' 카테고리의 다른 글
안드로이드 TextView 의 Text에서 줄바꿈 (3) | 2016.02.05 |
---|---|
안드로이드 layout editor 자동꺼짐 현상 (0) | 2016.02.05 |
안드로이드, 개발, 정보, 메서드 (0) | 2016.02.05 |
안드로이드 프로그램 샘플 모음 (0) | 2016.02.05 |
Android RadioGroup 예제 (0) | 2016.02.05 |
Comments