HomeIndex.java
package basic.futao.ma; import java.io.IOException; import java.util.List; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import location_map.futao.ma.R; public class HomeIndex extends Activity { /** Called when the activity is first created. */ String TAG = "PhoneStatReceiver"; Context Tcontext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Tcontext = HomeIndex.this; LocationManager loctionManager = (LocationManager) Tcontext .getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE);// 高精度 criteria.setAltitudeRequired(false);// 不要求海拔 criteria.setBearingRequired(false);// 不要求方位 criteria.setCostAllowed(true);// 允许有花费 criteria.setPowerRequirement(Criteria.POWER_LOW);// 低功耗 // 从可用的位置提供器中,匹配以上标准的最佳提供器 String provider = loctionManager.getBestProvider(criteria, true); Location location = null; try { location = loctionManager.getLastKnownLocation(provider); } catch (Exception e) { // TODO: handle exception } if(location != null){//如果获得有效坐标 // 获得最后一次变化的位置 Double x = location.getLatitude();// 纬度 Double y = location.getLongitude();// 经度 Log.d("PhoneStatReceiver", x + "_" + y); // 根据坐标返回具体地址 Geocoder geocoder; List<Address> addresses = null; String addressStr = "";// 最终地址 geocoder = new Geocoder(Tcontext, Locale.getDefault()); try { addresses = geocoder.getFromLocation(x, y, 1); if (!addresses.isEmpty()) {// 判断addresses是否为空//如果获得有效地理位置 String address = addresses.get(0).getAddressLine(0); String city = addresses.get(0).getAddressLine(1); String country = addresses.get(0).getAddressLine(2); addressStr = country + "__" + city + "___" + address; Log.d(TAG, addressStr); }else{ Log.d(TAG, "获取失败"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ Log.d(TAG, "获取失败"); } } }
然后是权限
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>