使用的类

LoactionManager 管理Android用户定位服务,由getSystemService(Context.LOCATION_SERVICE);方法获得  manager.getAllProviders();//获得机器上所有的locationprovider                  getLastKnownLocation() //获得当前位置的location对象,次方法经常得到null值,只需要在这个方法所在的对象,创建和销毁的地方分别注册/销毁一个LocationListener即可,比如在oncreate注册,onstop销毁,在Thread的构造注册,在run结束销毁.使用一个循环不断获得location.记得使用一个计时器来定期检查是否为null.一直为null就要销毁这个thread.  requestLocationUpdates(string provider名,int 多久更新(暗示),int 多远更新,LocationListener监听器)  可以配合Criteria使用manager.getBestProvider(cr, true) 根据条件获得最适合的provider//获得最好的provider,参数1Criteria对象 参2 获得的provider是否是可用的,true只获取可用的LocationListener 监听器类onLocationChanged 监听当地址发生改变时触发LocationProvider 提供多种定位方式 Criteria 设置条件,配合LocationManager 获得最适合的LocationProviderCriteria cr=new Criteria();cr.setAccuracy(Criteria.ACCURACY_FINE); //设置精度cr.setAltitudeRequired(false);//是否需要海拔cr.setBearingRequired(false);//是否需要方向信息cr.setCostAllowed(true);//是否使用wifi 等 长生流量等费用cr.setPowerRequirement(cr.POWER_MEDIUM);//设置电量级别GeoCoder 查询所在地址:  getFromLocationName("台柳路", 1); 根据路明返回List<Address>  getFromLocation(latitude, longidute, 1); 根据进纬度 参3 得到几个结果 返回List<Address>Address 地址类使用http查询结果  http://maps.googleapis.com/maps/api/geocode/返回方式?address=地址名&sensor=是否来自传感器&language=语言  http://maps.googleapis.com/maps/api/geocode/返回方式?latlng=经度,纬度&sensor=是否来自传感器&language=语言  返回方式:json  xml  language:返回数据的语言 zh为中文  sensor:true false

权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />



  
  

1.获取:LocationMananger

LocationManager manager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
2获取最合适的provider

Criteria cr=new Criteria();cr.setAccuracy(Criteria.ACCURACY_FINE); //设置精度cr.setAltitudeRequired(false);//是否需要海拔cr.setBearingRequired(false);//是否需要方向信息cr.setCostAllowed(true);//是否使用wifi 等 长生流量等费用cr.setPowerRequirement(cr.POWER_MEDIUM);//设置电量级别                                String providertype=manager.getBestProvider(cr, true);                                LocationProvider provider=manager.getProvider(providertype);

3 注册监听器

manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0, 0,new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}//位置发生改变时,@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stubdouble longidute=location.getLongitude(); //经度double latitude= location.getLatitude();//纬度}});}});
3 获得经纬度表达的地址:

Geocoder geocoder=new Geocoder(MainActivity.this);List<Address> list=null;List<String> lists=new ArrayList<String>();list = geocoder.getFromLocation(latitude, longidute, 1);//根据经纬度获取list=geocoder.getFromLocationName("台柳路", 1); //根据地址名获取




更多相关文章

  1. android获取经纬度和地方名称
  2. 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt
  3. Android动态获取当前手机IP地址
  4. Android 获取手机当前所在的经纬度
  5. adb最新版下载地址
  6. android取得账户(邮件地址)
  7. 【转】android好文章或博客地址收藏
  8. android下获取有线和无线的Ip地址

随机推荐

  1. 微软在ARM上成功移植OpenJDK for Windows
  2. 技术造成歧视?微软等巨头不为警方提供面部
  3. 全新设计的Xcode 12
  4. VS Code的Golang插件现在由Go团队维护
  5. 从Java EE到Jakarta EE,最终过渡版本发布
  6. 马化腾每天刷题?代码你打算写到几岁?
  7. GNOME Mutter的代码清理工作将促进支持Vu
  8. 又说骚话,Linus再次拒绝Intel CPU漏洞补丁
  9. 不出意外的话,Go泛型终于要引入了
  10. .NET IDE Rider公布2020.2路线图