`
bcyy
  • 浏览: 1832118 次
文章分类
社区版块
存档分类
最新评论

关于Android用户定位获取location值为null的解决方法

 
阅读更多

在玩一个GPS的东西 获取Location一直为null 后来是从onLocationChanged里面拿location才搞定了 贴一下吧 代码太乱

  1. /**
  2. *主要是用户定位操作
  3. *@author hope
  4. */
  5. packagecom.jeedroid.tools;
  6. importjava.io.IOException;
  7. importjava.util.List;
  8. importjava.util.Locale;
  9. importandroid.content.Context;
  10. importandroid.location.Address;
  11. importandroid.location.Criteria;
  12. importandroid.location.Geocoder;
  13. importandroid.location.Location;
  14. importandroid.location.LocationListener;
  15. importandroid.location.LocationManager;
  16. importandroid.os.Bundle;
  17. importandroid.provider.Settings;
  18. importandroid.util.Log;
  19. publicclassLocationTools
  20. {
  21. privateLocationlocation;
  22. publicstaticLocationManagergetLocationManager(Contextcontext)
  23. {
  24. return(LocationManager)context.getSystemService(context.LOCATION_SERVICE);
  25. }
  26. //获取位置信息
  27. publicStringgetAddress(Contextcontext)
  28. {
  29. LocationManagerlocationManager=this.getLocationManager(context);
  30. if(!locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))
  31. {
  32. //打开GPS需Android2.2以上系统支持
  33. android.provider.Settings.Secure.setLocationProviderEnabled(context.getContentResolver(),LocationManager.GPS_PROVIDER,false);
  34. }
  35. returndoWork(context);
  36. }
  37. privateStringdoWork(Contextcontext)
  38. {
  39. Stringaddres="";
  40. LocationManagerlocationManager=this.getLocationManager(context);
  41. Criteriacriteria=newCriteria();
  42. //获得最好的定位效果
  43. criteria.setAccuracy(Criteria.ACCURACY_FINE);
  44. criteria.setAltitudeRequired(false);
  45. criteria.setBearingRequired(false);
  46. criteria.setCostAllowed(false);
  47. //使用省电模式
  48. criteria.setPowerRequirement(Criteria.POWER_LOW);
  49. Stringprovider=locationManager.getBestProvider(criteria,true);
  50. Log.i("provider>>>>>>",provider);
  51. //获得当前位置location为空是一直取从onLocationChanged里面取
  52. while(location==null)
  53. {
  54. location=locationManager.getLastKnownLocation(provider);
  55. }
  56. //locationListener
  57. LocationListenerlocationListener=newLocationListener()
  58. {
  59. @Override
  60. publicvoidonLocationChanged(Locationlocation)
  61. {
  62. LocationTools.this.location=location;
  63. }
  64. @Override
  65. publicvoidonProviderDisabled(Stringprovider)
  66. {
  67. }
  68. @Override
  69. publicvoidonProviderEnabled(Stringprovider)
  70. {
  71. }
  72. @Override
  73. publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras)
  74. {
  75. }
  76. };
  77. locationManager.requestLocationUpdates(provider,1000,10,locationListener);
  78. Geocodergeo=newGeocoder(context,Locale.getDefault());
  79. try
  80. {
  81. List<Address>address=geo.getFromLocation(location.getLatitude(),location.getLongitude(),1);
  82. if(address.size()>0)
  83. {
  84. addres=address.get(0).getAddressLine(0);
  85. }
  86. }catch(IOExceptione)
  87. {
  88. //TODOAuto-generatedcatchblock
  89. e.printStackTrace();
  90. }
  91. returnaddres;
  92. }
  93. }

分享到:
评论

相关推荐

    android使用GPS获取当前地理位置

    第一:当使用GPS定位时,最好不要使用getLastKnownLocation方法获得当前位置对象Location,因为该对 象可以在onLocationChanged的参数中由系统给予(根据文档,getLastKnownLocation有2方面功能:1. 获取当前地理...

    Android GPS定位简单 DEMO

    方法获取Location对象** ``` String provider = LocationManager.GPS_PROVIDER;// 指定LocationManager的定位方法 Location location = locationManager.getLastKnownLocation(provider);// 调用...

    Android打开GPS导航并获取位置信息返回null解决方案

    可是一写进代码里,返回值(Location 类型)居然一直为null..郁闷的不得了。在网上查了好久,发现好多人都和我一样纠结于这个问题上,有人说是因为GPS没打开,也有人说是相关权限没加上..可是我的明明已经在设置里...

    Android GPS室内定位问题的解决方法(location为null)

     那么我来告诉大家,只有NETWORK_PROVIDER这种模式才是室内定位可靠的方式,就是当location为null的时候只要用这个,NETWORK_PROVIDER。  不过直接用大家也是用不了的,为啥呢,因为大部分厂商也不会用google的...

    Android获取Gps经纬度定位

    解决网络上常见的location返回为null问题,室内真机测试可能达不到结果,但是室外一定可以

    Android应用实现GPS定位返回经纬度Demo

    在Android应用中实现GPS返回Location经纬度值 不为null 可以实现

    Android锁屏无法继续定位问题

    Android锁屏无法继续定位问题 产生问题的原因: 手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会将手机进入休眠状态。此时的服务以及线程等都会停止。 最近就这个问题,阅读了很多代码以及官方文档...

    【原创】通过Android自带的工具实现当前定位 + 2步搞定getBestProvider返回null的问题

    今天用Android自带的LocationManager和Location类实现定位,然而中间却出了点问题,那就是getBestProvider在真机上测试返回null值。查阅了很多方法都没有效果,于是我自己灵机一动想出了较好的解决办法。 基本代码...

    android 百度地图 定位示例

    if (location == null || mMapView == null) return; MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) //此处设置开发者获取到的方向信息,顺时针0-...

    在Android模拟器上模拟GPS功能总是null的解决方法

    来获取location信息,但是往往在调试中loc是null的,因为首先需要在模拟器中手动添加GPS信息,有两种手动添加方法 1、在eclipse下,windows–&gt;open perspective–&gt;DDMS–&gt;Emulator control–&gt;Manual下手动设置经纬度...

    百度地图 定位城市或者详细信息

    定位城市或者详细信息百度地图act_person_location = (TextView) findViewById(R.id.act_person_location); mLocationClient = new LocationClient(context.getApplicationContext()); //声明LocationClient类 ...

    androidGPS经纬度速度方向

    //获取首次定位时间 String str; str="完成首次定位,耗时"+utc+"毫秒"; Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show(); break; case ...

    百度location

    // 设置发起定位请求的间隔时间为5000ms // option.setIsNeedAddress(true); // 返回的定位结果包含地址信息 // option.setNeedDeviceDirect(true); // 返回的定位结果包含手机机头的方向 option.setAddrType(...

    百度地图定位Cordova插件cordova-plugin-baidumaplocation.zip

    申请密钥Android定位SDK 每一个AndroidManifest.xml 中的package属性 对应一个AK,不可混用 iOS SDK开发密钥 每一个Bundle Identifier 对应一个AK,不可混用 二,安装插件```` cordova plugin add ...

Global site tag (gtag.js) - Google Analytics