public class MainActivity extends Activity implements OnClickListener, Runnable {
private Location loc;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO Auto-generated method stub
LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria reqment = new Criteria();
//reqment.setAccuracy(Criteria.ACCURACY_FINE);
reqment.setAccuracy(Criteria.NO_REQUIREMENT);
reqment.setAltitudeRequired(false);
reqment.setBearingRequired(false);
reqment.setCostAllowed(true);
reqment.setPowerRequirement(Criteria.POWER_LOW);
String provider = locManager.getBestProvider(reqment, true);
Toast.makeText(getApplicationContext(), "best provider :"+provider, Toast.LENGTH_SHORT).show();
String results = LocationManager.GPS_PROVIDER+":"+ locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)+"\n"
+ LocationManager.NETWORK_PROVIDER+":"+ locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Toast.makeText(getApplicationContext(), results, Toast.LENGTH_SHORT).show();
loc = locManager.getLastKnownLocation(provider);
LocUpdate(loc);
LocationListener locListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "location listener", Toast.LENGTH_SHORT).show();
LocUpdate(location);
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
LocUpdate(null);
}@
Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
};
locManager.requestLocationUpdates(provider, 0, 0, locListener);
}
private void LocUpdate(Location loc) {
String str;
String addrStr = null;
if(loc != null){
double lat = loc.getLatitude();
double lng = loc.getLongitude();
str = "(위도:"+lat+", 경도:"+lng+")";
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
//List<Address> locations = null;
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
//if(addresses != null && addresses.size() > 0 ) {
if(addresses.size() > 0 ) {
Address mAddress = addresses.get(0);
StringBuilder strBlder = new StringBuilder();
String buf;
for(int i=0; (buf=mAddress.getAddressLine(i)) != null; i++) {
strBlder.append(buf+"\n");
}
place = strBlder.toString();
Toast.makeText(MainActivity.this, place, Toast.LENGTH_SHORT).show();
}else{
place = "??";
}
} catch (IOException e) {
e.printStackTrace();
place = "Unknown";
Toast.makeText(MainActivity.this, place, Toast.LENGTH_SHORT).show();
}
}
}
실폰에 실습결과
unknown만 출력됩니다. 왜 이럴까용?
bestprovider 는 network로 나오구요,,'
그럼 현재 와이파이가 되는 곳에 있으니까 geocoder를 이용해서 현재 주소값이 나와야는데
ioexception 만 발생하네요 ㅠ