OpenFrameWork
오픈프레임워크_Day81
px
2015. 7. 8. 16:06
### : 목차 구분 기호
--- : 목차 내에 항목 구분 기호
@@@ : 태그 용도
--- : 목차 내에 항목 구분 기호
@@@ : 태그 용도
,,, : 같은 목차 내에 구분 기호
목차
1. 이론 및 정보
2. 설정 및 그 밖에
3. 소스코드 또는 실습
4. 과제
###################################
1. 이론 및 정보
-----------------------------------
* 안드로이드에서 Log는 자동으로 지워짐?
~\AndroidEclipse\eclipse.ini
-----------------------------------
* LBS
- 인공위성을 통해 알아내는 방법 - GPS
- 기지국 이용하는 방식 - Wifi, 3G 이용
-----------------------------------
* 쉽게 위도, 경도를 찾아주는 사이트
http://mygeoposition.com/
-----------------------------------
* 구글 맵 v1, v2 있음
v2만 지원함
MapView -> Fragment
-----------------------------------
* 구글 맵 서비스 이용하려면 아래 내용 설치 되어 있어야함
프로젝트 Import
~\android-sdk\extras\google\google_play_services\libproject\google-play-services_lib
프로젝트로 배포가 되어 있음
이를 쓰고자하는 프로젝트가 참조를 해야함
프로젝트 우클릭 - 프로퍼티
적당한 버전 클릭
아래와 같이 API와 Private Lib가 추가 되어있는지 확인
###################################
2. 설정 및 그 밖에
-----------------------------------
2. 설정 및 그 밖에
-----------------------------------
* 프로젝트 생성
LbsApp
프로젝트 생성시에 Package 절대 중복되지 않는 걸로 하기
com.uticleTest1.lbsapp
-----------------------------------
* GPS, Wifi(3G) 퍼미션 추가
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
-----------------------------------
* 에뮬레이터에서 GPS 테스트는 DDMS의 Location Controls를 이용
위도, 경도를 미리 DDMS에 사이트에서 찾아서 넣어주고
나오는지 확인
-----------------------------------
* jar가 아닌 파일들 projct
-----------------------------------
* 구글 Map 쓰기위한 Permission 만들어야함
* 구글 계정이 있어야함 키값
cloud.google.com/console
console.developers.google.com
로그인 하고
play.google.com/apps/publish/signup/
들어감
code.google.com/apis/console
create 하고
왼쪽에 API 및 인증 - 사용자 인증 정보 - 새 키 만들기 - 안드로이드 키
상자 안에 내가 프로젝트 만들었다는 것을 증명을 해야함
C:\Users\jhta\.android
위 폴더에 모든 환경 설정이 저장이 됨
C:\Users\jhta\.android\debug.keystore
를 구글에 알려주면 됨
해당 위치의 cmd 에서
C:\Users\jhta\.android>keytool -list -v -keystore debug.keystore
비밀번호 없음 그냥 엔터
C:\Users\jhta\.android>keytool -list -v -keystore debug.keystore
키 저장소 비밀번호 입력:
***************** WARNING WARNING WARNING *****************
* 키 저장소에 저장된 정보의 무결성이 *
* 확인되지 않았습니다! 무결성을 확인하려면, *
* 키 저장소 비밀번호를 제공해야 합니다. *
***************** WARNING WARNING WARNING *****************
키 저장소 유형: JKS
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
별칭 이름: androiddebugkey
생성 날짜: 2015. 6. 23
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Android Debug, O=Android, C=US
발행자: CN=Android Debug, O=Android, C=US
일련 번호: 51d2317b
적합한 시작 날짜: Tue Jun 23 10:37:13 KST 2015, 종료 날짜: Thu Jun 15 10:37:13 KST 2045
인증서 지문:
MD5: EE:40:01:A1:1C:F1:D2:4B:42:FA:DB:2E:25:B4:BE:9F
SHA1: FC:2D:7E:C5:E8:EE:08:8E:A6:3A:E5:A5:7F:28:D0:33:C5:EF:32:10
SHA256: 15:9C:1F:55:32:41:DA:1C:F1:32:84:DB:C2:FE:61:47:67:00:03:59:5C:32:9C:81:67:AC:A1:2D
:FD:11:D8:8D
서명 알고리즘 이름: SHA256withRSA
버전: 3
확장:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: E3 85 A0 03 63 48 DD 06 42 B6 C0 AB 9C D9 18 B7 ....cH..B.......
0010: E3 BD 85 15 ....
]
]
*******************************************
*******************************************
키 저장소 비밀번호 입력:
***************** WARNING WARNING WARNING *****************
* 키 저장소에 저장된 정보의 무결성이 *
* 확인되지 않았습니다! 무결성을 확인하려면, *
* 키 저장소 비밀번호를 제공해야 합니다. *
***************** WARNING WARNING WARNING *****************
키 저장소 유형: JKS
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
별칭 이름: androiddebugkey
생성 날짜: 2015. 6. 23
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Android Debug, O=Android, C=US
발행자: CN=Android Debug, O=Android, C=US
일련 번호: 51d2317b
적합한 시작 날짜: Tue Jun 23 10:37:13 KST 2015, 종료 날짜: Thu Jun 15 10:37:13 KST 2045
인증서 지문:
MD5: EE:40:01:A1:1C:F1:D2:4B:42:FA:DB:2E:25:B4:BE:9F
SHA1: FC:2D:7E:C5:E8:EE:08:8E:A6:3A:E5:A5:7F:28:D0:33:C5:EF:32:10
SHA256: 15:9C:1F:55:32:41:DA:1C:F1:32:84:DB:C2:FE:61:47:67:00:03:59:5C:32:9C:81:67:AC:A1:2D
:FD:11:D8:8D
서명 알고리즘 이름: SHA256withRSA
버전: 3
확장:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: E3 85 A0 03 63 48 DD 06 42 B6 C0 AB 9C D9 18 B7 ....cH..B.......
0010: E3 BD 85 15 ....
]
]
*******************************************
*******************************************
혹은 아래에도 있음
결국은 구글에서 필요로 하는 값이 아래와 같음
FC:2D:7E:C5:E8:EE:08:8E:A6:3A:E5:A5:7F:28:D0:33:C5:EF:32:10;com.uticleTest1.lbsapp
-----------------------------------
* 에뮬레이터 새로 만듬 -
Target,CPU가 Google API여야함
-----------------------------------
Error
Window - Preferences - General - show heap status 체크
~\AndroidEclipse\eclipse.ini
맨 밑에
-Xms40m
-Xmx512m
-Xmx512m
아래로 변경
-Xms1024m
-Xmx1024m
-Xmx1024m
-----------------------------------
* 안드로이드 구글에서 필요한 설정
console.developers.google.com
###################################
3. 소스코드 또는 실습
-----------------------------------
* 안드로이드 구글에서 필요한 설정
console.developers.google.com
아래 버튼 클릭
설정은 아래와 같이 되어 있으면 된다.
###################################
3. 소스코드 또는 실습
-----------------------------------
3-1
WorkSpace : ~\study\AndroidWork
/WebApp/src/com/example/webapp/HtmlParserList.java
package com.example.webapp;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class HtmlParserList extends ListActivity {
String listName[] = { "Gyeongju National Park", "Soklisan National Park",
"Bukhansan National Park" };
String listId[] = { "121900", "120500", "121500" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listName);
setListAdapter(adapter);
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(getApplicationContext(),
HtmlParserDetail.class);
intent.putExtra("parkId", listId[position]);
startActivity(intent);
}
});
}
}
4. 과제
-----------------------------------
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class HtmlParserList extends ListActivity {
String listName[] = { "Gyeongju National Park", "Soklisan National Park",
"Bukhansan National Park" };
String listId[] = { "121900", "120500", "121500" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listName);
setListAdapter(adapter);
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(getApplicationContext(),
HtmlParserDetail.class);
intent.putExtra("parkId", listId[position]);
startActivity(intent);
}
});
}
}
-----------------------------------
3-2
WorkSpace : ~\study\AndroidWork
/WebApp/src/com/example/webapp/HtmlParserDetail.java
package com.example.webapp;
import java.net.URL;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.HTMLElementName;
import net.htmlparser.jericho.Source;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.widget.TextView;
public class HtmlParserDetail extends Activity {
private TextView tv;
private String parkId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
parkId = getIntent().getExtras().getString("parkId");
tv.setText(getHtmlData());
setContentView(tv);
}
// 실제로 HTML 파싱을 하는 메서드
private String getHtmlData(){
// 서버 주소 준비
String url = "http://knps.or.kr/front/portal/visit/visitCourseMain.do?parkId=" + parkId;
// 결과 담을 변수
String src = "";
try {
// 안드로이드 정책상 네트워크는 Thread로 구현해야 하나 이번에는 임의로
// Thread 안만들어도 네트워크를 할 수 있겠끔 정책
// 아래 코드 대신에 Thread로 만들어 보시오. Thread에 대한 이해를 파악 할 수 있음
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
// URL 접속하기, 전부 긁어옴, DOM Api로 접근하기는 힘듬
URL parkUrl = new URL(url);
// jericho를 사용하기 위해서 준비, 제리코 source를 사용
Source source = new Source(parkUrl);
// div 태그 전부 가져오기
List tagName = source.getAllElements(HTMLElementName.DIV);
// Log.d(getLocalClassName(), "태그 갯수 : "+tagName.size());
// 그대로 출력
for (int i = 0; i < tagName.size(); i++) {
Element e = (Element)tagName.get(i);
if("f_text".equals(e.getAttributes().getValue("class"))){
src = e.getContent().toString();
// 태그 안에 내용들만 보여주고 싶으면 정규표현식이 편함
Pattern p = Pattern.compile("<(?:.|\\s)*?>");
Matcher m = p.matcher(src);
src = m.replaceAll(" ");
}
}
} catch (Exception e) {
Log.e(getLocalClassName(), "getHtmlData() 오류 : " + e);
}
return src;
}
}
import java.net.URL;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.HTMLElementName;
import net.htmlparser.jericho.Source;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.widget.TextView;
public class HtmlParserDetail extends Activity {
private TextView tv;
private String parkId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
parkId = getIntent().getExtras().getString("parkId");
tv.setText(getHtmlData());
setContentView(tv);
}
// 실제로 HTML 파싱을 하는 메서드
private String getHtmlData(){
// 서버 주소 준비
String url = "http://knps.or.kr/front/portal/visit/visitCourseMain.do?parkId=" + parkId;
// 결과 담을 변수
String src = "";
try {
// 안드로이드 정책상 네트워크는 Thread로 구현해야 하나 이번에는 임의로
// Thread 안만들어도 네트워크를 할 수 있겠끔 정책
// 아래 코드 대신에 Thread로 만들어 보시오. Thread에 대한 이해를 파악 할 수 있음
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
// URL 접속하기, 전부 긁어옴, DOM Api로 접근하기는 힘듬
URL parkUrl = new URL(url);
// jericho를 사용하기 위해서 준비, 제리코 source를 사용
Source source = new Source(parkUrl);
// div 태그 전부 가져오기
List tagName = source.getAllElements(HTMLElementName.DIV);
// Log.d(getLocalClassName(), "태그 갯수 : "+tagName.size());
// 그대로 출력
for (int i = 0; i < tagName.size(); i++) {
Element e = (Element)tagName.get(i);
if("f_text".equals(e.getAttributes().getValue("class"))){
src = e.getContent().toString();
// 태그 안에 내용들만 보여주고 싶으면 정규표현식이 편함
Pattern p = Pattern.compile("<(?:.|\\s)*?>");
Matcher m = p.matcher(src);
src = m.replaceAll(" ");
}
}
} catch (Exception e) {
Log.e(getLocalClassName(), "getHtmlData() 오류 : " + e);
}
return src;
}
}
-----------------------------------
3-3
WorkSpace : ~\study\AndroidWork
/LbsApp/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.uticleTest1.lbsapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<permission android:name="com.uticleTest1.lbsapp.permission.MAPS_RECEIVE"></permission>
<uses-permission android:name="com.uticleTest1.lbsapp.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<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.gms.version"
android:value="@integer/google_play_services_version"/>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDm0JLM-CgGNBdTXJaOrUK0u-gbTwLGPQs"/>
<activity
android:name=".MainActivity"
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="LbsActivity"></activity>
<activity android:name="GoogleMapActivity"></activity>
<activity android:name="ItemOverlayActivity"></activity>
</application>
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.uticleTest1.lbsapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<permission android:name="com.uticleTest1.lbsapp.permission.MAPS_RECEIVE"></permission>
<uses-permission android:name="com.uticleTest1.lbsapp.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<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.gms.version"
android:value="@integer/google_play_services_version"/>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDm0JLM-CgGNBdTXJaOrUK0u-gbTwLGPQs"/>
<activity
android:name=".MainActivity"
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="LbsActivity"></activity>
<activity android:name="GoogleMapActivity"></activity>
<activity android:name="ItemOverlayActivity"></activity>
</application>
</manifest>
-----------------------------------
3-4
WorkSpace : ~\study\AndroidWork
/LbsApp/res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onBtnLbs"
android:text="LBS" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onBtnGoogleMap"
android:text="GoogleMap" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onBtnItemoverlay"
android:text="Item OverLay" />
</LinearLayout>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onBtnLbs"
android:text="LBS" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onBtnGoogleMap"
android:text="GoogleMap" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onBtnItemoverlay"
android:text="Item OverLay" />
</LinearLayout>
-----------------------------------
3-5
WorkSpace : ~\study\AndroidWork
/LbsApp/src/com/uticleTest1/lbsapp/MainActivity.java
package com.uticleTest1.lbsapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onBtnLbs(View v) {
startActivity(new Intent(MainActivity.this,LbsActivity.class));
}
public void onBtnGoogleMap(View v) {
startActivity(new Intent(MainActivity.this,GoogleMapActivity.class));
}
public void onBtnItemoverlay(View v) {
startActivity(new Intent(MainActivity.this,ItemOverlayActivity.class));
}
}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onBtnLbs(View v) {
startActivity(new Intent(MainActivity.this,LbsActivity.class));
}
public void onBtnGoogleMap(View v) {
startActivity(new Intent(MainActivity.this,GoogleMapActivity.class));
}
public void onBtnItemoverlay(View v) {
startActivity(new Intent(MainActivity.this,ItemOverlayActivity.class));
}
}
-----------------------------------
3-6
WorkSpace : ~\study\AndroidWork
/LbsApp/src/com/uticleTest1/lbsapp/LbsActivity.java
package com.uticleTest1.lbsapp;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class LbsActivity extends Activity {
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
setContentView(tv);
LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// 에뮬은 GPS 가능
// 실제 기기는 Wifi, 3G에서 가능
LocHandler handler = new LocHandler();
// GPS 서비스 , 1/1000 초 단위 , 미터 단위(얼마나 움직이냐),
// locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,10000,0,handler);
// 3G, Wifi 사용시
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,10000,0,handler);
// 가장 최근에 갱신된 정보를 가져오기
try{
// 어떤 장치를 통해서 알아냈는지 장치를 지정해줌
Location loc = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(loc != null){
Double lat = loc.getLatitude();
Double lon = loc.getLongitude();
Toast.makeText(getApplicationContext(), "latitude : "+lat+", "+"longitude : "+lon , Toast.LENGTH_SHORT);
}
}catch(Exception e){
}
}
private class LocHandler implements LocationListener{
@Override
public void onLocationChanged(Location location) {
// 위도
Double lat = location.getLatitude();
// 경도
Double lon = location.getLongitude();
tv.setText("latitude : "+lat+", "+"longitude : "+lon);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
}
}
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class LbsActivity extends Activity {
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
setContentView(tv);
LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// 에뮬은 GPS 가능
// 실제 기기는 Wifi, 3G에서 가능
LocHandler handler = new LocHandler();
// GPS 서비스 , 1/1000 초 단위 , 미터 단위(얼마나 움직이냐),
// locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,10000,0,handler);
// 3G, Wifi 사용시
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,10000,0,handler);
// 가장 최근에 갱신된 정보를 가져오기
try{
// 어떤 장치를 통해서 알아냈는지 장치를 지정해줌
Location loc = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(loc != null){
Double lat = loc.getLatitude();
Double lon = loc.getLongitude();
Toast.makeText(getApplicationContext(), "latitude : "+lat+", "+"longitude : "+lon , Toast.LENGTH_SHORT);
}
}catch(Exception e){
}
}
private class LocHandler implements LocationListener{
@Override
public void onLocationChanged(Location location) {
// 위도
Double lat = location.getLatitude();
// 경도
Double lon = location.getLongitude();
tv.setText("latitude : "+lat+", "+"longitude : "+lon);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
}
}
-----------------------------------
3-7
WorkSpace : ~\study\AndroidWork
/LbsApp/src/com/uticleTest1/lbsapp/GoogleMapActivity.java
package com.uticleTest1.lbsapp;
import android.app.Activity;
import android.os.Bundle;
public class GoogleMapActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_googlemap);
}
}
import android.app.Activity;
import android.os.Bundle;
public class GoogleMapActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_googlemap);
}
}
-----------------------------------
3-8
WorkSpace : ~\study\AndroidWork
/LbsApp/src/com/uticleTest1/lbsapp/ItemOverlayActivity.java
package com.uticleTest1.lbsapp;
import android.app.Activity;
import android.os.Bundle;
public class ItemOverlayActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO Auto-generated method stub
}
}
import android.app.Activity;
import android.os.Bundle;
public class ItemOverlayActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO Auto-generated method stub
}
}
-----------------------------------
3-9
WorkSpace : ~\study\AndroidWork
/LbsApp/res/layout/activity_googlemap.xml
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
-----------------------------------
###################################4. 과제
-----------------------------------
-----------------------------------
###################################
5. 과제 해결
-----------------------------------
5. 과제 해결
-----------------------------------
-----------------------------------
###################################
6. 기타
----------------------------------- -----------------------------------