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();