안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요 왕초보 헝그리입니다..^^;;
암튼 밑에 소스부터 대충 함 보시구요
현재 배우고 옵션 메뉴와 gps를 배우는 중인데요
암튼 밑에 소스부터 대충 함 보시구요
현재 배우고 옵션 메뉴와 gps를 배우는 중인데요
문제 부터 말씀드리자면 이클립스 ddms에서 gps값을 보내면
어플실행중에서 gps값을 받는 것까지는 되는데(toast를 이용해서 값받아오는것까지는 보입니다.)
내위치로 이동하는 옵션메뉴 버튼을 클릭하면
죄송합니다라는 메시지와함께 어플이 종료가 되는데요
고수님들 꼭좀 답변 부탁드리겠습니다..
봐도봐도 도져히 모르겠습니다...ㅜㅜ
package com.lch.gpstest;
import java.util.List;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import android.graphics.drawable.Drawable;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
public class rest extends MapActivity {
MapView mMap;
Drawable good, bad;
MapController mControl;
Good m_good;
Bad m_bad;
MapView mMap;
Drawable good, bad;
MapController mControl;
Good m_good;
Bad m_bad;
LocationManager loca_ma;
String mProvider;
double fLatitude;
double fLongitude;
String mProvider;
double fLatitude;
double fLongitude;
int mCount;
protected boolean isRouteDisplayed() {
return false;
}
return false;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location_mapviewtest);
super.onCreate(savedInstanceState);
setContentView(R.layout.location_mapviewtest);
mMap = (MapView) findViewById(R.id.mapview);
MapController mapControl = mMap.getController();
mapControl.setZoom(16);
mMap.setBuiltInZoomControls(true);
MapController mapControl = mMap.getController();
mapControl.setZoom(16);
mMap.setBuiltInZoomControls(true);
GeoPoint pt = new GeoPoint(36350412, 127384547);
mapControl.setCenter(pt);
mapControl.setCenter(pt);
good = getResources().getDrawable(R.drawable.rest);
good.setBounds(0, 0, good.getIntrinsicWidth(),
good.getIntrinsicHeight());
bad = getResources().getDrawable(R.drawable.rest1);
bad.setBounds(0, 0, bad.getIntrinsicWidth(), bad.getIntrinsicHeight());
good.setBounds(0, 0, good.getIntrinsicWidth(),
good.getIntrinsicHeight());
bad = getResources().getDrawable(R.drawable.rest1);
bad.setBounds(0, 0, bad.getIntrinsicWidth(), bad.getIntrinsicHeight());
m_bad = new Bad(bad);
m_good = new Good(good);
// mProvider = "gps"; ////LocationManager 초기화
loca_ma = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // LocationManager
// 초기화
mProvider = loca_ma.getBestProvider(new Criteria(), true);// LocationManager
// 초기화
loca_ma.requestLocationUpdates(mProvider, 3000, 10, mListener);// LocationManager
// 초기화
mCount = 0;
loca_ma = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // LocationManager
// 초기화
mProvider = loca_ma.getBestProvider(new Criteria(), true);// LocationManager
// 초기화
loca_ma.requestLocationUpdates(mProvider, 3000, 10, mListener);// LocationManager
// 초기화
mCount = 0;
}
LocationListener mListener = new LocationListener() { // 위치 반응 새로 수신
public void onLocationChanged(final Location location) { // 위치 반응 부분
mCount++;
fLatitude = location.getLatitude();
fLongitude = location.getLongitude();
fLongitude = location.getLongitude();
String sloc = String.format("GPS를 찾았습니다.[%f][%f]", fLatitude, fLongitude);
Toast.makeText(rest.this, sloc, Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider) {
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
};
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, 1, 0, "비싼집");
menu.add(0, 2, 0, "싼집");
menu.add(0, 3, 0, "전체보기");
menu.add(0, 4, 0, "내 위치"); <<================= 내위치 이부분
super.onCreateOptionsMenu(menu);
menu.add(0, 1, 0, "비싼집");
menu.add(0, 2, 0, "싼집");
menu.add(0, 3, 0, "전체보기");
menu.add(0, 4, 0, "내 위치"); <<================= 내위치 이부분
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
List<Overlay> overlays = mMap.getOverlays();
overlays.clear();
super.onOptionsItemSelected(item);
List<Overlay> overlays = mMap.getOverlays();
overlays.clear();
switch (item.getItemId()) {
case 1:
overlays.add(m_good);
case 1:
overlays.add(m_good);
Toast.makeText(rest.this, "돈많은가보지?ㅡㅡ;;", Toast.LENGTH_SHORT).show();
return true;
case 2:
Toast.makeText(rest.this, "맨날 돈없어..ㅡㅡ;;;", Toast.LENGTH_SHORT)
.show();
overlays.add(m_bad);
return true;
Toast.makeText(rest.this, "맨날 돈없어..ㅡㅡ;;;", Toast.LENGTH_SHORT)
.show();
overlays.add(m_bad);
return true;
case 3:
Toast.makeText(rest.this, "전체 보기", Toast.LENGTH_SHORT).show();
Toast.makeText(rest.this, "전체 보기", Toast.LENGTH_SHORT).show();
overlays.add(m_good);
overlays.add(m_bad);
return true;
overlays.add(m_bad);
return true;
case 4: <<========================= 이부분 (제 생각에는 여기서 오류가 나는듯한데 원인을 모르겠습니다)
Toast.makeText(rest.this, "이동중···", Toast.LENGTH_SHORT).show();
Toast.makeText(rest.this, "이동중···", Toast.LENGTH_SHORT).show();
GeoPoint newPoint = new GeoPoint((int)(fLatitude*1E6), (int)(fLongitude*1E6));
mControl.animateTo(newPoint);
mControl.animateTo(newPoint);
return true;
}
return false;
}
return false;
}
class Good extends ItemizedOverlay<OverlayItem> {
public Good(Drawable defaultMarker) {
super(defaultMarker);
boundCenterBottom(defaultMarker);
boundCenter(good);
populate();
}
super(defaultMarker);
boundCenterBottom(defaultMarker);
boundCenter(good);
populate();
}
@Override
public int size() {
return 3;
}
public int size() {
return 3;
}
@Override
protected OverlayItem createItem(int i) {
OverlayItem item = null;
protected OverlayItem createItem(int i) {
OverlayItem item = null;
switch (i) {
case 0:
item = new OverlayItem(new GeoPoint(36355020, 127387419), "향촌",
"꼬기 만세");
item = new OverlayItem(new GeoPoint(36355020, 127387419), "향촌",
"꼬기 만세");
break;
case 1:
item = new OverlayItem(new GeoPoint(36353880, 127381196),
"일당 감자탕", "꼬기 꼬기");
item = new OverlayItem(new GeoPoint(36353880, 127381196),
"일당 감자탕", "꼬기 꼬기");
break;
case 2:
item = new OverlayItem(new GeoPoint(36351011, 127381668),
"24숑마우", "짜장 짬뽕");
item = new OverlayItem(new GeoPoint(36351011, 127381668),
"24숑마우", "짜장 짬뽕");
break;
}
return item;
}
return item;
}
@Override
public boolean onTap(int index) { // 클릭시 반응 함수 : ontap
String msg;
OverlayItem item = getItem(index);
msg = "음식 = " + item.getTitle() + ",설명 = " + item.getSnippet();
Toast.makeText(rest.this, msg, Toast.LENGTH_LONG).show();
return true;
}
public boolean onTap(int index) { // 클릭시 반응 함수 : ontap
String msg;
OverlayItem item = getItem(index);
msg = "음식 = " + item.getTitle() + ",설명 = " + item.getSnippet();
Toast.makeText(rest.this, msg, Toast.LENGTH_LONG).show();
return true;
}
}
class Bad extends ItemizedOverlay<OverlayItem> {
public Bad(Drawable defaultMarker) {
super(defaultMarker);
boundCenterBottom(defaultMarker);
boundCenter(bad);
populate();
}
super(defaultMarker);
boundCenterBottom(defaultMarker);
boundCenter(bad);
populate();
}
@Override
public int size() {
return 3;
}
public int size() {
return 3;
}
@Override
protected OverlayItem createItem(int i) {
OverlayItem item = null;
protected OverlayItem createItem(int i) {
OverlayItem item = null;
switch (i) {
case 0:
item = new OverlayItem(new GeoPoint(36348591, 127383471),
"청해루", "24시간");
break;
case 1:
item = new OverlayItem(new GeoPoint(36350769, 127388749),
"짜오짜오", "맛없당");
break;
case 2:
item = new OverlayItem(new GeoPoint(36350665, 127382569),
"니하오", "중국갔다와");
item = new OverlayItem(new GeoPoint(36348591, 127383471),
"청해루", "24시간");
break;
case 1:
item = new OverlayItem(new GeoPoint(36350769, 127388749),
"짜오짜오", "맛없당");
break;
case 2:
item = new OverlayItem(new GeoPoint(36350665, 127382569),
"니하오", "중국갔다와");
break;
}
return item;
}
return item;
}
@Override
public boolean onTap(int index) { // 클릭시 반응 함수 : ontap
String msg;
OverlayItem item = getItem(index);
msg = "음식 = " + item.getTitle() + ",설명 = " + item.getSnippet();
Toast.makeText(rest.this, msg, Toast.LENGTH_LONG).show();
return true;
public boolean onTap(int index) { // 클릭시 반응 함수 : ontap
String msg;
OverlayItem item = getItem(index);
msg = "음식 = " + item.getTitle() + ",설명 = " + item.getSnippet();
Toast.makeText(rest.this, msg, Toast.LENGTH_LONG).show();
return true;
}
}
}