2014년 8월 29일 금요일

안드로이드 SDK를 이용한 GPS 위치정보를 구하기

안드로이드 SDK를 이용한 GPS 위치정보를 구하기
LocationManager를 호출해 GPS와 기지국에서 제공하는 위치 정보를 얻음
얻은 위치 정보를 이용해서 GEocoder를 활용해서 주소를 가져옴

 private LocationManager locManager;
 private Geocoder geoCoder;
 private Location myLocation = null;
 private double latPoint, lngPoint;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
...
  // LocationListener 핸들
  locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  // GPS로 부터 위치 정보를 업데이트 요청
  locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
  // 기지국으로부터 위치 정보를 업데이트 요청
  locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);
  // 주소를 가져오기 위해 설정 - KOREA, KOREAN 모두 가능
  geoCoder = new Geocoder(this, Locale.KOREA);
}

 @Override
 public void onLocationChanged(Location location) {
  // TODO Auto-generated method stub
  myLocation = location;
 }

 @Override
 public void onLocationChanged(Location location) {
  // TODO Auto-generated method stub
  myLocation = location;
  getGeoLocation();
 }

 public void getGeoLocation() {
  StringBuffer mAddress = new StringBuffer();
  if(myLocation != null) {
   latPoint = myLocation.getLatitude();
   lngPoint = myLocation.getLongitude();
   try {
    // 위도,경도를 이용하여 현재 위치의 주소를 가져온다.
    List<Address> addresses;
    addresses = geoCoder.getFromLocation(latPoint, lngPoint, 1);
    for(Address addr: addresses){
     int index = addr.getMaxAddressLineIndex();
     for(int i=0;i<=index;i++){
      mAddress.append(addr.getAddressLine(i));
      mAddress.append(" ");
     }
     mAddress.append("\n");
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
   MLog.e("Address : " + mAddress);
  }
 }

LocationManager 를 이용하기 위해 Activity에 LocationListnener 를 implements 해야 한다.
권한 설정(AndroidManifest.xml)
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION/">

댓글 없음:

댓글 쓰기