[Android] LocationManager 사용법
일반적으로 안드로이드 폰에서 위치정보를 얻는 방법은 크게 3가지
1) GPS - 위성에서 정보를 받아 삼각측량으로 위치를 계산, 정확하다, 건물 안에서는 안된다
2) 3G망 - 인접된 전화기지국에서오는 전파의 시간 차이로 위치를 계산, 실내에서도 가능
3) WiFi 의 AP
1. 위치제공자 확인법
1) AndroidManifest.xml - 권한설정
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
2) 시스템으로부터 LocationManager 객체 얻어오기
3) getAllProviders() 메소드로 위치제공자 리스트 가져오기
// 1. 위치관리자 객체 생성
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// 2. 위치제공자 모두 가져오기
List<String> list = lm.getAllProviders();
for (int i = 0; i < list.size(); i++) {
// 위치제공자
list.get(i);
// 해당 제공자 사용가능 boolean
lm.isProviderEnabled(list.get(i));
}
/**안드로이드 위치 제공자 관련 상수**/
public static final String GPS_PROVIDER = "gps"
public static final String NETWORK_PROVIDER = "network"
public static final String PASSIVE_PROVIDER = "passive"
2. Criteria
// 1. 위치관리자 객체 생성
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//2. Criteria 객체 생성(프로바이더의 상세 속성 옵션)
Criteria criteria = new Criteria();
criteria.set(Criteria.ACCURACY_FINE); //위도와 경도에 정확도(정밀도) 설정
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
criteria.setAltitudeRequired(false);
criteria.setSpeedRequired(true);
criteria.setCostAllowed(true);
criteria.setBearingRequired(false);
//3. criteria의 옵션에 해당하는, 현재 위치값을 가져오기 위한 프로바이더
private String bestProvide = locationManager.getBestProvider(criteria, true);
4. 위치 정보 취득시의 콜백 - onLocationChanged
//GPS Update 시간은 1초 이상, 반경은 10m 이상이 좋음
//(GPS 송수신하는데 준비 과정에서만 약 1초가 소요 된다고 함)
if(!locationManager.isProviderEnabled(provider)
&&locationManager.getLastKnownLocation(provider)!=null) {
locationManager.requestLocationUpdates(provider, 1000, 10, this);
}else{
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
provider = locationManager.getBestProvider(criteria, true);
locationManager.requestLocationUpdates(provider, 1000, 10, this);
}
@Override
public void onLocationChanged(Location location) {
// GPS 변경에 따른 코딩 구현.
}
Reference
https://developer.android.com/reference/android/location/LocationManager
LocationManager | Android Developers
LocationManager public class LocationManager extends Object java.lang.Object ↳ android.location.LocationManager This class provides access to the system location services. These services allow applications to obtain periodic updates of the device's geog
developer.android.com
https://bitsoul.tistory.com/130
안드로이드: 위치제공자 LocationManager 예제 - 현재폰에 제공되는 위치제공자 확인
안드로이드: 위치제공자 LocationManager 예제 - 현재폰에 제공되는 위치제공자 확인 안드로이드를 사용하여 위치기반 앱을 만들때, 현재 톤에 제공되는 위치 제공자 들이 어떠한 것들이 있는지 확인해봐야 합니다..
bitsoul.tistory.com
https://pluu.github.io/blog/android/droidkaigi/2017/12/30/droidkaigi-location/
Pluu Dev - [번역] DroidKaigi 2017 ~ 위치 정보를 정확하게 트래킹하는 기술
Emulator 29.2.2 Canary에서 Location 사용하기 Posted on 28 Sep 2019 [요약] Demystifying Android Accessibility Development (Google I/O '19) Posted on 23 Sep 2019 Android Studio Tips #2 Posted on 24 Jul 2019 Android Studio Tips #1 Posted on 13 Jul 2019
pluu.github.io
https://gogorchg.tistory.com/entry/Android-실시간-GPS-사용
[Android] 실시간 GPS 사용
실시간으로 위치 추적을 할 때, 여러 Test와 조사 결과 다음과 같이 나왔다. 1. 강제적으로 Update를 시키지 말고, LocationListener를 통하여 받도록 하자. 2. GPS Update 시간은 1초 이상, 반경은 10m 이상이 좋..
gogorchg.tistory.com