解决百度定位获取position为空的困惑
2015-06-04 21:04
239 查看
package com.sfdj.salebaby.utils; import java.io.IOException; import java.util.List; import java.util.Locale; import android.content.Context; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.util.Log; import android.os.Bundle; public class LocationTools { private Location location; public static LocationManager getLocationManager(Context context) { return (LocationManager) context .getSystemService(context.LOCATION_SERVICE); } // 获取位置信息 public String getAddress(Context context) { LocationManager locationManager = this.getLocationManager(context); if (!locationManager .isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) { // 打开GPS 需Android2.2以上系统支持 android.provider.Settings.Secure.setLocationProviderEnabled( context.getContentResolver(), LocationManager.GPS_PROVIDER, false); } return doWork(context); } private String doWork(Context context) { String addres = ""; LocationManager locationManager = this.getLocationManager(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); Log.i("provider>>>>>>", provider); // 获得当前位置 location为空是一直取 从onLocationChanged里面取 while (location == null) { location = locationManager.getLastKnownLocation(provider); } // locationListener LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { LocationTools.this.location = location; } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } }; locationManager.requestLocationUpdates(provider, 1000, 10, locationListener); Geocoder geo = new Geocoder(context, Locale.getDefault()); try { List<Address> address = geo.getFromLocation(location.getLatitude(), location.getLongitude(), 1); if (address.size() > 0) { addres = address.get(0).getAddressLine(0); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return addres; } }
相关文章推荐
- STL --> stack栈
- 利用NLB群集实现WEB站点的高可用部署
- 文件名通配符 “?” “*” “[]” “[!]”
- 反射_类加载器_代理
- P122.42
- JAVA基础——IO流
- 欢迎使用CSDN-markdown编辑器
- Mac OS安装Apache、Tomcat、Nginx、PHP、MySQL、终端配色
- 英语要提高阅读和听力
- 小组自评、互评
- 乂文®便携触摸屏-介绍
- 将博客搬至CSDN
- 对软件功程课的改善建议
- 新的开始
- iOS 7系列译文:忘记NSURLConnection,拥抱NSURLSession吧!
- suspend() 和 resume() 方法,notify()和wait()方法区别
- 如何提升你的能力?给年轻程序员的几条建议
- BZOJ3990 排序
- 【每日scrum】NO.3
- 简单谈一下wordpress中的ajax请求,为什么会一直返回“0”