LocationManager를 호출해 GPS와 기지국에서 제공하는 위치 정보를 얻음
얻은 위치 정보를 이용해서 GEocoder를 활용해서 주소를 가져옴
private LocationManager locManager;
private Geocoder geoCoder;
private Location myLocation = null;
private double latPoint, lngPoint;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
...
// LocationListener 핸들
locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// GPS로 부터 위치 정보를 업데이트 요청
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
// 기지국으로부터 위치 정보를 업데이트 요청
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);
// 주소를 가져오기 위해 설정 - KOREA, KOREAN 모두 가능
geoCoder = new Geocoder(this, Locale.KOREA);
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
myLocation = location;
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
myLocation = location;
getGeoLocation();
}
public void getGeoLocation() {
StringBuffer mAddress = new StringBuffer();
if(myLocation != null) {
latPoint = myLocation.getLatitude();
lngPoint = myLocation.getLongitude();
try {
// 위도,경도를 이용하여 현재 위치의 주소를 가져온다.
List<Address> addresses;
addresses = geoCoder.getFromLocation(latPoint, lngPoint, 1);
for(Address addr: addresses){
int index = addr.getMaxAddressLineIndex();
for(int i=0;i<=index;i++){
mAddress.append(addr.getAddressLine(i));
mAddress.append(" ");
}
mAddress.append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
MLog.e("Address : " + mAddress);
}
}
private Geocoder geoCoder;
private Location myLocation = null;
private double latPoint, lngPoint;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
...
// LocationListener 핸들
locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// GPS로 부터 위치 정보를 업데이트 요청
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
// 기지국으로부터 위치 정보를 업데이트 요청
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);
// 주소를 가져오기 위해 설정 - KOREA, KOREAN 모두 가능
geoCoder = new Geocoder(this, Locale.KOREA);
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
myLocation = location;
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
myLocation = location;
getGeoLocation();
}
public void getGeoLocation() {
StringBuffer mAddress = new StringBuffer();
if(myLocation != null) {
latPoint = myLocation.getLatitude();
lngPoint = myLocation.getLongitude();
try {
// 위도,경도를 이용하여 현재 위치의 주소를 가져온다.
List<Address> addresses;
addresses = geoCoder.getFromLocation(latPoint, lngPoint, 1);
for(Address addr: addresses){
int index = addr.getMaxAddressLineIndex();
for(int i=0;i<=index;i++){
mAddress.append(addr.getAddressLine(i));
mAddress.append(" ");
}
mAddress.append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
MLog.e("Address : " + mAddress);
}
}
LocationManager 를 이용하기 위해 Activity에 LocationListnener 를 implements 해야 한다.
권한 설정(AndroidManifest.xml)
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION/">
댓글 없음:
댓글 쓰기