在玩一个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. }

更多相关文章

  1. Android(安卓)获取Inflate得到的view的宽度高度
  2. AccountManager getAccount 在Android(安卓)O 8.0版本中获取为 n
  3. android bitmap drawable 互转
  4. Android常用UI
  5. android手机内部存储空间和外部存储空间获取代码
  6. 暂时只会这种导航,实时显示自己的位置,,求其他更好的方法,或api
  7. 获取手机配置
  8. Android实现从网络获取图片显示并保存到SD卡的方法
  9. Android(安卓)常用控件自定义样式RadioButton、CheckBox、Progre

随机推荐

  1. zxing QRcode
  2. Android 无线启动过程分析 无线启动过程
  3. android recycleView局部刷新的选择
  4. Android学习——TextView 设置中划线 下
  5. Best Android Remote Desktop Apps?
  6. Android中的文件存储数据方式 .
  7. android 开机动画(boot animation)的制作
  8. Android基础入门教程——7.1.3 Android(
  9. Android NDK之二:创建NativeActivity
  10. Android指纹解锁边界性问题