프로그래밍 방식으로 안드로이드에서 현재 GPS 정보를 가져오는 방법


GPS를 이용한 제 현재 위치정보를 프로그래밍 방식으로 얻어오고 싶습니다. 어떻게 해야할까요?

  • 2016년 05월 28일에 작성됨

조회수 195


1 답변


좋아요
0
싫어요
채택취소하기

현재 위치를 GPS 좌표값으로 받아오는 방식을 순차적으로 설명해놓은 예제 앱을 소개해드립니다.

전체 소스 코드는 Get Current Location coordinates , City name - in Android에서 볼 수 있습니다.


작동 방식 :

  • 가장 먼저 해야할 일은 manifest 파일에 아래 권한을 등록하는 겁니다 :

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
  • 그 다음, LocationManager 인스턴스를 생성해주고 :

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    
  • GPS가 활성화되었는지 확인한 뒤,

  • LocationListener를 구현하여 좌표를 받아옵니다 :

    LocationListener locationListener = new MyLocationListener();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
    
  • 아래는 LocationListener에 대한 샘플 코드입니다.


/*---------- Listener class to get coordinates ------------- */
private class MyLocationListener implements LocationListener {

    @Override
    public void onLocationChanged(Location loc) {
        editLocation.setText("");
        pb.setVisibility(View.INVISIBLE);
        Toast.makeText(
                getBaseContext(),
                "Location changed: Lat: " + loc.getLatitude() + " Lng: "
                    + loc.getLongitude(), Toast.LENGTH_SHORT).show();
        String longitude = "Longitude: " + loc.getLongitude();
        Log.v(TAG, longitude);
        String latitude = "Latitude: " + loc.getLatitude();
        Log.v(TAG, latitude);

        /*------- To get city name from coordinates -------- */
        String cityName = null;
        Geocoder gcd = new Geocoder(getBaseContext(), Locale.getDefault());
        List<Address> addresses;
        try {
            addresses = gcd.getFromLocation(loc.getLatitude(),
                    loc.getLongitude(), 1);
            if (addresses.size() > 0) {
                System.out.println(addresses.get(0).getLocality());
                cityName = addresses.get(0).getLocality();
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        String s = longitude + "\n" + latitude + "\n\nMy Current City is: "
            + cityName;
        editLocation.setText(s);
    }

    @Override
    public void onProviderDisabled(String provider) {}

    @Override
    public void onProviderEnabled(String provider) {}

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {}
}
  • 2016년 05월 29일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close