꿈꾸는 시스템 디자이너

LocationManager 설정시 주의 사항 본문

Development/Android

LocationManager 설정시 주의 사항

독행소년 2013. 6. 13. 14:56

안드로이드 단말이 현재 위치를 확인하는 방법은 GPS를 통한 방법과 기지국을 통한 방법이 있다.

LocationManager를 이용하여 LocationProvider를 세팅하는 방식으로 위치를 확인 방식을 설정할 수 있다.


GPS를 이용하는 방식은 정확도가 높지만, 실내에서는 사용이 불가능하다는 단점이 있고, 기지국을 이용하는 방식은 실내 사용이 가능하지만 정확도가 떨어진다.


	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// LocationManager 객체 생성
		locationManager = (LocationManager) this
				.getSystemService(Context.LOCATION_SERVICE);

		// LocationManaer.NETWORK_PROVIDER : 기지국들로부터 현재 위치 확인
		// LocationManaer.GPS_PROVIDER : GPS들로부터 현재 위치 확인
		if (locationManager.isProviderEnabled(locationManager.NETWORK_PROVIDER) == true) {
			locationProvider = LocationManager.NETWORK_PROVIDER;
		} else
			locationProvider = LocationManager.GPS_PROVIDER;

		// 현재 위치를 조회한다. 결과는 locationListener를 통해 수신
		locationManager.requestLocationUpdates(locationProvider, 10000, 0,
				locationListener);

		// 최근 위치를 조회한다. 결과는 바로 얻을 수 있음
		Location lastKnowLocation = locationManager
				.getLastKnownLocation(locationProvider);
		showLocationByToast(lastKnowLocation);
		// 위치 조회를 철회한다. 리스너를 제거한다.
		// locationManager.removeUpdates(locationListener);
	}


또한가지 주의사항으로, 개통되지 않은 단말기를 이용하여 개발을 할 때에는 NETWORK_PROVIDER를 이용해서는 안된다. 개통되지 않은 단말기에서 NETWORK_PROVIDER로 설정하고 LocationManager가 제공하는 메소드들을 호출하면 에러가 발생한다.


여담으로.. 갤럭시노트2에서는 잘 동작하는 앱이 개발폰(갤럭시넥서스)에서는 에러가 나는 이유가 무엇인지를 몰라 한참을 고생했다. 동일 APK 파일인데 장치마다 동작여부가 다르니 황당할 수 밖에..

원인이 개발폰이 미개통 폰인데 기지국으로부터 현재 위치를 확인하려고 해서였다. ㅡ,ㅡ

Comments