private
LocationManager locManager;
Geocoder geoCoder;
private
Location myLocation =
null
;
double
latPoint =
0
;
double
lngPoint =
0
;
float
speed =
0
;
String gps1 =
""
;
String gps2 =
""
;
String gps3 =
""
;
LocationManager lm =
null
;
String provider =
null
;
void
getGPS() {
/** 위치정보 객체를 생성한다. */
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
/** 현재 사용가능한 위치 정보 장치 검색 */
Criteria c =
new
Criteria();
provider = lm.getBestProvider(c,
true
);
if
(provider ==
null
|| !lm.isProviderEnabled(provider)) {
List<String> list = lm.getAllProviders();
for
(
int
i =
0
; i < list.size(); i++) {
String temp = list.get(i);
if
(lm.isProviderEnabled(temp)) {
provider = temp;
break
;
}
}
}
/** 마지막으로 조회했던 위치 얻기 */
Location location = lm.getLastKnownLocation(provider);
if
(location ==
null
) {
Toast.makeText(
this
,
"사용가능한 위치 정보 제공자가 없습니다."
, Toast.LENGTH_SHORT)
.show();
}
else
{
onLocationChanged(location);
}
}
/** 이 화면이 불릴 때, 일시정지 해제 처리 */
@Override
public
void
onResume() {
super
.onResume();
}
/** 위치가 변했을 경우 호출된다. */
@Override
public
void
onLocationChanged(Location location) {
double
lat = location.getLatitude();
double
lng = location.getLongitude();
public
String getAddress(
double
lat,
double
lng) {
String address =
null
;
Geocoder geocoder =
new
Geocoder(
this
, Locale.getDefault());
List<Address> list =
null
;
try
{
list = geocoder.getFromLocation(lat, lng,
1
);
}
catch
(Exception e) {
e.printStackTrace();
}
if
(list ==
null
) {
Log.e(
"getAddress"
,
"주소 데이터 얻기 실패"
);
return
null
;
}
if
(list.size() >
0
) {
Address addr = list.get(
0
);
address = addr.getCountryName() +
" "
+ addr.getPostalCode() +
" "
+ addr.getLocality() +
" "
+ addr.getThoroughfare() +
" "
+ addr.getFeatureName();
}
return
address;
}