[현재 접속자 현황]
안드로이드 관련 팁 게시판입니다.
글수 27
9일차=================================================
[gmail 계정 생성하기]
[과제] 탭브라우징
교재 p277
1) IntentTabDemo
2) AcornBrowser
3) AndroidBrowser
[과제2]
1) 인텐트 호출을 암시적호출로 바꾸고
Intent intent = new Intent("MyBrowser");
intent.putExtra("url", "http://okgosu.net");
2) 인텐트 호출할 때 웹주소를 넘겨서 MyBrowser클래스에서 받아서 처리하도록 함
Intent intent = getIntent();
String url = intent.getStringExtra("url");
browser.loadUrl(url);
[원래]
String data = el.getElementsByTagName("title").item(0)
.getFirstChild().getNodeValue();
items.add(data);
[바꿀내용]
1)
Element title = (Element)el.getElementsByTagName("title").item(0);
items.add(getElementValue(title));
2) 함수 추가
private static String getElementValue(Element e) {
if (e == null)
return "Nothing";
Node temp = e.getFirstChild();
StringBuilder sb = new StringBuilder();
while (temp != null) {
sb.append(temp.getNodeValue());
temp = temp.getNextSibling();
}
return sb.toString();
}
3) getView에서 html이 표시되도록
label.setText(Html.fromHtml(items.get(position).toString()));
[LBS] - Location Based Service (위치기반 서비스)
1. 현재 위치 확인: GPS - 인공위성(3개이상)
1) GPS 문제점
- 오차(수십미터)
- 실내, 하늘이 가릴 때, 빌딩숲
- 보완 알고리즘 : network (3G, WiFi기지국 위치)
2) LocationProvider: gps? nework? 등 현재위치 확인 수단 제공
3) LocationListner: 현재위치 변화를 감지, LocationProvider 상태 변화감지
4) 위치정보 (GoeCode) --> 구글서버에 쿼리
위도/경도 --> 주소 : 1건
주소 --> 위도/경도 : 다건
2. 현재 위치를 지도에 표시 : MapView를 사용 --> apiKey --> 구글계정
- 레이어 방식 : 지도 - 인공위성 사진 - 교통정보
- 마커를 이용해서 표시
3. 구글맵 사용절차
1) 구글맵 apiKey 받기
2) 구글맵 AVD 생성
3) 구글맵 - 안드로이드 프로젝트 생성
4) 프로젝트 설정 - 구글 라이브러리
<uses-library android:name="com.google.android.maps" android:required="true"/>
5) 권한 설정 - 인터넷, 위치 정보
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
6) MapView에 apiKey 값 설정: my_map_view.xml
[구글키 받기]
cd .android
1. MD5 값 생성
keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android
* JDK패스가 설정안된 경우
"C:\Program Files\Java\jdk1.5.0_19\bin\keytool" -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android
2. 구글맵키 등록 사이트로 이동
http://code.google.com/android/maps-api-signup.html
3. 약관 동의 체크
4. MD5값을 입력후 "Generate API Key"클릭
--> apikey값 저장
* 지도 테스트
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse ("geo:55.636051,12.398769")));
[피자마을]
Longitude: 12.398769
Latitude: 55.636051
[비행기무덤]
Longitude: -110.827760
Latitude: 32.153887
(geo:32.153887,-110.827760)
Haveforeningen Hareker
Haveforeningen Harekær
keytool -list -alias androiddebugkey -keystore debug.keystore -storepass
android -keypass android
[과제] 교재 p234
1. 레이아웃 message_demo.xml
2. Activity : MessageDemo.java
3. 다음을 .show() 위에 라인에 추가함
1) "확인" 버튼을 추가하고, "확인"을 클릭하면 Toast메시지로 "확인했습니다" 출력
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.............띄우기
}
})
2) "취소" 버튼을 추가하고, "취소"를 클릭하면 아무것도 안함
.setNegativeButton("취소", null)
[과제]
1. 현재 위치 정보를 받으면 대화 상자를 띄움 onLocationChanged
2. 대화 상자에는 확인/취소 버튼 추가
1) 확인을 클릭하면 지도보기로 이동
2) 취소를 클릭하면 그냥 닫기
3. GPS 설정 상태 확인 (onCreate)
String gs = android.provider.Settings.Secure.getString(getContentResolver(),
android.provider.Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (gs.indexOf("gps", 0) < 0) {
Toast.makeText(MyLocationView.this, "GPS 설정안됨", 1000).show();
//GPS가 안켜져있으면 켜는 설정으로 이동
new AlertDialog.Builder(MyLocationView.this)
.setTitle("GPS 설정")
.setMessage("GPS가 꺼져 있습니다. GPS를 켜시겠습니까?")
.setPositiveButton("GPS켜기", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(android.provider.Settings.
ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
}).show();
} else {
Toast.makeText(MyLocationView.this, "GPS 설정됨", 1000).show();
}
[과제] : LocationManager에 근접 알림 설정
- 송파구 가락동 반경 500m에 근접시 알림발생하도록 설정
- 알림이 발생하면 Intent가 실행되고, okgosu.net 사이트로 이동함
double latitude = 37.493835;
double longitude = 127.121314;
PendingIntent pintent = PendingIntent.getActivity(MyLocationView.this, 0,
new Intent(Intent.ACTION_VIEW, Uri.parse("http://okgosu.net")), 0);
locationMgr.addProximityAlert(latitude, longitude, 500, -1, pintent);
* 에뮬레이터에서는
좌표를 127.121314, 47.493835 로 보냈다가
다시 좌표를 127.121314, 37.493835 로 수정해서 보낸다.
[과제] 현재 위치 정보 사용 안하기
onLocationChanged의 AlertDialog의 setNegativeButton에서
"취소"를 클릭하면 현재위치 정보 업데이트 안하도록 설정
1) .setNegativeButton("취소", null) 에 리스너 설정
2) 취소를 누르면 다음 코드가 실행
locationMgr.removeUpdates(MyLocationView.this);
[현재 위치 표시]
1. MapActivity 사용
MapView + Activity = MapActivity
2. 레이아웃에는 MapView사용
apiKey
* 참고
- ListView + Activity = ListActivity
- TabHost + Activity = TabAcitvity
- Preference + Activity = PreferenceActivity
3. GeoCoder: getFromLocationName - 주소를 검색하면 위도, 경도가
[과제]: MyMapView 수정
1. 현재 위치에 gmarker.png 파일을 표시한다.
2. 주소를 검색하면 검색결과를 다이얼로그로 띄운다.
- 다이얼로그에서 선택한 주소를 지도에 표시한다.
1) String placeName = loc_name.getText().toString(); 밑에 다음을 추가
ArrayList<String> addrs =new ArrayList<String>();
2) geocodeResults를 다음과 같이 변경
변경전: List<Address> geocodeResults;
변경후: final List<Address> geocodeResults;
3) results.setText(locInfo); 밑에 다이얼로그가 표시되도록 코드 추가
final String[] addresses = addrs.toArray(new String[addrs.size()]);
new AlertDialog.Builder(MyMapView.this)
.setTitle(placeName + " 검색 결과")
.setSingleChoiceItems(addresses, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).setNegativeButton("취소", null)
.show();
4) 검색결과 추가
addrs.add(loc.getFeatureName());
5) 다이얼로그에서 각 아이템을 클릭하면 Toast 표시 (setSingleChoiceItems 클릭리스너)
Toast.makeText(MyMapView.this, addresses[whichButton], 1000).show();
6) 확인을 누르면 선택한 아이템으로 이동 (setPositiveButton 클릭리스너)
Address where = geocodeResults.get(whichButton);
lat = where.getLatitude();
lon = where.getLongitude();
mapControl.animateTo(new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6)));
mapControl.setZoom(15);
[과제]
1. my_map_view.xml 에 체크박스 추가
2. MyMapView에 onCreate 함수에 체크박스 리스너를 추가함
map.setSatellite(true); 인공위성 사진표시 함
map.setSatellite(false); 인공위성 사진표시 안함






okgosu
최근 답변 댓글