GPS 정보로 현재 위치 찾기
우선 GPS Location 정보를 가져오도록 하겠습니다.
※ 위치정보 또한 위험 권한에 속하므로 권한 체크를 해주셔야 합니다.
1. 안드로이드 GPS 정보 가져오기
1.1 AndroidManifest.xml에 권한 등록하기
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1.2 위치 관리자 객체 참조하기
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
1.3 Location Listener 구현
: Location Listener는 위치정보를 전달할 때 호출되므로 onLocationChanged() 메서드 안에서 위치 정보 처리.
final LocationListener gpsLocationListener = new LocationListener() {
public void onLocationChanged(Location location) {
String provider = location.getProvider();
double longitude = location.getLongitude();
double latitude = location.getLatitude();
double altitude = location.getAltitude();
txtResult.setText("위치정보 : " + provider + "\n" +
"위도 : " + longitude + "\n" +
"경도 : " + latitude + "\n" +
"고도 : " + altitude);
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
};
1.4 Location 정보 업데이트
- Location 정보를 원하는 시간, 거리마다 갱신해줍니다.
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, gpsLocationListener);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, gpsLocationListener);
이제 위도, 경도 값을 받아왔으니 현재 위치를 찾도록 하겠습니다.
2. 현재 위치 찾기
현재 위치는 Geocoder 클래스를 이용하여 주소 변환(위도, 경도 -> 주소)하면 됩니다.
2.1 Location 권한 설정
: AndroidManifest.xml에 권한 등록하기
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
2.2 Geocoder 객체 생성하기
Geocoder g = new Geocoder(this);
2.3 Address 객체의 메서드 이용하여 정보 추출
: toString(), getCountryName(), getLatitude(), getLongitude(), getPostalCode(), getPhone() 메서드 사용.
try {
address = g.getFromLocation(lat, lng, 10);
} catch (IOException e) {
e.printStackTrace();
}
if (address != null) {
if (address.size() == 0) {
txt.setText("위치 찾기 오류");
} else {
Log.e("위치",address.get(0).toString());
txt.setText(address.get(0).getAddressLine(0));
}
}
2.4 위치 정보(Log) 확인
Address[addressLines=[0:"대한민국 대구광역시 수성구 월드컵로13길"],feature=월드컵로13길,
admin=대구광역시,sub-admin=null,locality=null,thoroughfare=null,postalCode=null,countryCode=KR,
countryName=대한민국,hasLatitude=true,latitude=35.8358357,hasLongitude=true,longitude=128.6820708,
phone=null,url=null,extras=null], Address[addressLines=[0:"대한민국 대구광역시 수성구 대흥동"]
'Programming 개발은 구글로 > JAVA[Android]' 카테고리의 다른 글
[RxJava] 5.subscribeOn과 observeOn의 차이점 (0) | 2022.05.25 |
---|---|
[RxJava] 7.배압(Backpressure) 개념 이해 (0) | 2022.05.24 |
Android 개발자를 위한 Google I/O 핵심 내용 13가지 (0) | 2022.05.22 |
[안드로이드] App Icon 추가 및 수정하기 (0) | 2022.05.19 |
[안드로이드] 추상클래스와 인터페이스 (0) | 2022.05.18 |
댓글