首先获取LocationManager、Location及Criteria

LocationManager locationManager;String context = Context.LOCATION_SERVICE;locationManager = (LocationManager) getSystemService(context);Criteria criteria = new Criteria();criteria.setAccuracy(Criteria.ACCURACY_FINE);criteria.setAltitudeRequired(false);criteria.setBearingRequired(false);criteria.setCostAllowed(false);criteria.setPowerRequirement(Criteria.POWER_LOW);String provider = locationManager.getBestProvider(criteria,true);Location location = locationManager.getLastKnownLocation(provider);


Criteria 类介绍:

Criteria是“精确度”的意思,Criteria类提供若干个查询条件:

(1) public void setAccuracy( int accuracy)

位置解析的精度,高或低

参数: Criteria. ACCURACY_FINE,精确模式;

Criteria. ACCURACY_COARSE,模糊模式;

(2) public void setAltitudeRequired(booleanaltitudeRequired)

是否提供海拔高度信息,是或否

(3) public void setBearingRequired(boolean bearingRequired)

是否提供方向信息,是或否

(4) public void setCostAllowed(boolean costAllowed)

是否允许运营商计费,是或否

(5) public void setPowerRequirement(int level)

电池消耗,无、低、中、高,参数 Criteria. NO_REQUIREMENT,Criteria. POWER_LOW,Criteria. POWER_MEDIUM, orCriteria. POWER_HIGH,

(6) public void setSpeedRequired(boolean speedRequired)

是否提供速度信息,是或否

获取地理信息函数:

private void updateWithNewLocation(Location location) {String coordinate;TextView loc = (TextView) findViewById(R.id.loc);String addressStr = "no address \n";if (location != null) {double lat = location.getLatitude();double lng = location.getLongitude();coordinate = "Latitude:" + lat + "\nLongitude:" + lng;double latitude = location.getLatitude();double longitude = location.getLongitude();Geocoder geocoder = new Geocoder(context, Locale.getDefault());try {List<Address> addresses = geocoder.getFromLocation(latitude,longitude, 1);StringBuilder sb = new StringBuilder();if (addresses.size() > 0) {Address address = addresses.get(0);for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {sb.append(address.getAddressLine(i)).append("\n");}sb.append(address.getLocality()).append("\n");sb.append(address.getLocality()).append("\n");sb.append(address.getCountryName());addressStr = sb.toString();}} catch (IOException e) {e.printStackTrace();}} else {coordinate = "no coordinate!\n";}loc.setText("your coordinate:\n" + coordinate + "\n"+ addressStr);}


更多相关文章

  1. android 判断 网络 类型
  2. android 获取实际view 宽度高度
  3. Android蓝牙开发浅谈
  4. Android(安卓)获取通讯录联系人
  5. android View根据自己获取焦点的情况执行语句
  6. google地图demo
  7. 编程回忆之Android回忆(Android应用参数的获取)
  8. android获取系统当前年月日时分秒的时间
  9. android中调用相册里面的图片并返回

随机推荐

  1. Android计算缓存大小、清空缓存
  2. Android取消EditText自动获取焦点
  3. Android开发中Android与网页(JavaScrip)t的
  4. Android 实现 选择文件对话框
  5. Android Studio 报错小记
  6. 6.1.5 GridView详解
  7. 设置Android程序的默认安装位置
  8. Android 手机震动 设置震动时间
  9. TabActivity的使用遇到的问题
  10. Android中使用TagFlowLayout制作动态添加