본문 바로가기
Android

GoogleMap 임의적으로 현재 위치 찾기

by 루에 2015. 7. 31.
반응형

구글맵의 위치정보는 LocationManager를 이용해 관리한다.


LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE));


위 구문으로 매니저 객체를 할당 받은 뒤,


LocationListener 객체를 만들거나 implements해서 구현한다.


@Override

        public void onLocationChanged(Location location) {

            Log.d(TAG, "onLocationChanged");

            if(location.getProvider().equals(LocationManager.GPS_PROVIDER)){

                Log.d(TAG, "privider is GPS" + location.getAccuracy());

            }

            else{

                Log.d(TAG, "privider is Network " + location.getAccuracy());

            }

        }


        @Override

        public void onStatusChanged(String provider, int status, Bundle extras) {

        }


        @Override

        public void onProviderEnabled(String provider) {


        }


        @Override

        public void onProviderDisabled(String provider) {


        }


그리고 LocationManager.requestLocationUpdates()로 리스너를 등록하는데, provider를 지정하는 부분에서 gps, network 두 종류의 provider가 있다. gps만 등록했을 경우 건물 내부에서는 리스너가 동작하지 않는다. 둘 다 등록하는 방법이 가장 일반적일 것이다.(사전에 네트워크, gps상태를 체크하고 처리할 수도 있겠다)



        mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, time(millisecond), distance(meter), LocationListener);


privider와 리스너를 등록하고 시간을 잰다. 시간은 1/1000초, 거리는 미터 단위다. 0,0으로 놓으면 디폴트로 동작한다. 이 리스너를 등록하고 나면 사용자가 죽일 때까지 계속 돌아가므로 배터리 소모의 근원이 된다. 사용하지 않을 때는


        mLocationManager.removeUpdates(LocationListener);


로 리스너를 제거하자.

반응형

댓글