使用的类

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. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. [APP] Android(安卓)开发笔记 006-使用短信验证SDK进行短信验证
  6. Android(安卓)之 下拉框(Spinner)的简单使用
  7. Android(安卓)Q 电量使用图分析 show app usage
  8. 【Android(安卓)volley】Android库Volley的使用介绍
  9. Titanium 使用刘明星的Jpush module做android端的消息推送

随机推荐

  1. Android(安卓)Service启动方式总结
  2. Android Studio 安装后无法运行
  3. android学习任务
  4. Android网络状态相关
  5. Android实现View的任意拖动
  6. [zz]android框架示意图
  7. Mac通过Android aapt解析apk包名、版本号
  8. Volley的基本使用
  9. Android Jni开发环境搭建完整版
  10. EditText点击隐藏hint