안드로이드 개발 질문/답변
(글 수 45,052)
GPS 값을 받아 화면에 출력하는 기능을 구현하려 하는데요
소스상에 에러는 없는데 실행하면 앱이 자꾸 다운됩니다...ㅠ
GPS도 켜도 권한도 잘 준것 같은데... 원인을 못찾겠습니다..ㅠ
GPS의 위도와 경도를 받아 외부에서 출력하는 소스입니다..
조언 좀 부탁드립니다...
public class GPSProvider {
LocationManager mlocManager;
LocationListener mlocListener;
String provider;
Location location;
String bestProvider;
Criteria criteria;
public GPSProvider(LocationManager mlocManager){
// GPS 값을 받아오기 위해서는 LocationManager 클래스의 오브젝트가 반드시 필요
this.mlocManager = mlocManager;
mlocListener = new LocationListener(){
public void onLocationChanged(Location loc) {
loc.getLatitude();
loc.getLongitude();
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
// Criteria()는 위치 정보를 가져올 때 고려되는 옵션
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setSpeedRequired(false);
criteria.setCostAllowed(true);
// 주어진 옵션 조건에 맞는 적합한 위치 정보 제공자 설정
bestProvider = mlocManager.getBestProvider(criteria, true);
// 마지막으로 감지된 사용자의 위치를 찾아내는 메소드
if(location == null){
location = mlocManager.getLastKnownLocation(bestProvider);
}
}
public double getLatitude(){
// 적합한 위치 정보 제공자를 찾아낸다
bestProvider = mlocManager.getBestProvider(criteria, true);
// 정보 제공자를 통해 업데이트
mlocManager.requestLocationUpdates(bestProvider, 0, 0, mlocListener);
// 최종 위치 정보 파악
location = mlocManager.getLastKnownLocation(bestProvider);
// Latitude 값 리턴
return location.getLatitude();
}
public double getLongitude(){
bestProvider = mlocManager.getBestProvider(criteria, true);
mlocManager.requestLocationUpdates(bestProvider, 0, 0, mlocListener);
location = mlocManager.getLastKnownLocation(bestProvider);
return location.getLongitude();
}
}
// 외부에서 GPSProvider 를 참조하여 위도 경도를 받아오는 부분
mlocManager
= (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// 시스템에서 제공하는 위치 정보 서비스를 받아와 LocationManager로 캐스팅
gps = new GPSProvider(mlocManager);
longitude = gps.getLongitude();
latitude = gps.getLatitude();
Toast.makeText(SmartTour.this, longitude+" / "+latitude, Toast.LENGTH_LONG).show();




로그켓도 같이올려주셔야됩니다~~
아마 어느부분에서 nullpoint 난듯하네요 ㅎㅎ