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

关于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室内定位问题的解决方法(location为null)

    在Android开发中,GPS定位是常见的功能之一,但遇到室内定位问题时,由于建筑物遮挡,GPS信号通常较弱或无法接收到,导致location对象为null。为了解决这一问题,我们可以利用网络定位(NETWORK_PROVIDER)作为替代...

    Android获取网络定位封装工具类

    在Android开发中,获取地理位置是常见的需求,网络定位是一种常用的方法。本篇文章将详细解析如何在Android中封装一个网络定位工具类,以便快速、高效地获取到设备的经纬度坐标。 首先,我们要引入必要的依赖。在`...

    Android平台GPS定位

    总的来说,掌握Android平台上的GPS定位技术,以及如何解决location为null的问题,对于构建涉及位置服务的应用至关重要。这不仅要求开发者理解定位机制,还需要熟悉Android的权限管理和异常处理,从而提供稳定且用户...

    Android GPS定位简单 DEMO

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

    android gps定位获取经纬度

    在Android平台上,GPS(全球定位系统)是获取设备地理位置信息的重要途径之一。通过调用系统的GPS服务,开发者可以实现应用程序的定位功能,如导航、地图应用等。本篇将详细介绍如何在Android中获取经纬度坐标。 一...

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

    这个方法可能会返回null,因为它既用于获取当前地理位置,也可能提供上次已知的位置。如果GPS信号不佳或未开启,它可能无法提供有效的位置信息。因此,最好是在`LocationListener`的`onLocationChanged`回调中处理`...

    android根据GPS获取经纬度和海拔

    这些信息主要依赖于全球定位系统(GPS)来获取。本文将深入探讨如何在Android应用中实现这一功能。 首先,我们需要在AndroidManifest.xml文件中添加GPS权限。这是获取位置信息的基础,没有这个权限,应用将无法访问...

    AndroidGPS定位,获取经纬度位置

    `onLocationChanged()`方法中的`updateTextView(location)`函数将获取到的新位置信息(包括经度和纬度)设置到TextView中: ```java private void updateTextView(Location location) { String latitude = ...

    Android地图定位googleSDK使用

    在Android开发中,集成Google Maps SDK和Google Location SDK是实现地图展示、定位功能的重要环节。本文将详细讲解如何使用这两个SDK来实现相应的功能,并提供一些关键知识点。 首先,我们需要在项目中添加Google ...

    Android获取Gps经纬度定位

    本篇将详细探讨如何解决“location返回为null”这一常见问题,以及如何进行有效的室外GPS定位测试。 首先,我们需要了解Android系统中的定位服务框架。Android提供了LocationManager服务,它是获取地理位置信息的...

    Android LocationManager 获取经纬度和卫星信息

    `ACCESS_FINE_LOCATION`用于获取高精度的定位信息,如GPS,而`ACCESS_COARSE_LOCATION`则用于获取较低精度的位置信息,如基于网络的定位。 接下来,在你的Activity或Service中,通过Context的getSystemService()...

    android获取GPS经纬度,并根据经纬度获取准确地址 _andoid 原生开发定位无法获取经纬度,

    在Android原生开发中,获取GPS经纬度以及根据这些经纬度获取准确的地理位置信息是常见的需求。以下将详细讲解如何实现这一功能。 首先,我们需要理解GPS(全球定位系统)的基本概念。GPS是一种基于卫星导航的定位...

    Android GPS获得定位数据源代码

    尽管现在的Android开发更倾向于使用Google Play Services的FusedLocationProviderClient,但对于学习和理解Android定位机制的基础概念,这段代码仍具有参考价值。不过,实际应用中应考虑更多的因素,如定位精度、...

    Android使用网络获取定位的方法

    Android 使用网络获取定位的方法 Android 使用网络获取定位的方法是指通过 Android 设备中的网络连接来获取当前设备的定位信息。这种方法可以通过使用 Android 的 LocationManager 类来实现。下面我们将详细介绍 ...

    Android GPS定位(获取经纬度)

    在Android开发中,GPS定位是实现许多功能的基础,如导航、位置服务等。本文将深入讲解如何在Android系统中获取设备的经纬度信息,以及如何通过一个管理类进行有效封装,便于在应用中复用。 首先,理解Android的定位...

    android获取GPS经纬度,并根据经纬度获取准确地址( 纯原生)

    总结来说,获取Android设备的GPS经纬度并转换为地址,需要利用Location服务获取定位信息,然后通过Geocoding API或`Geocoder`将坐标解析为可读的地址。在实际应用中,还需要考虑位置权限的获取、GPS状态的检查以及...

    Android Studio定位

    1. Google Play服务:Android Studio利用Google Play服务提供的Location API来实现定位功能。首先,确保在项目build.gradle文件中添加了Google Play服务库的依赖: ```groovy dependencies { implementation '...

    高德 开发 Android 定位SDK 开发指南 获取位置 获取定位数据

    通过以上步骤,开发者可以利用高德Android定位SDK实现高效、稳定的定位功能,为用户提供更加精准和便捷的服务。在实际开发过程中,参考官方文档和示例代码,结合项目需求进行调整和优化,是确保定位功能正常运行的...

    Android GPS 定位的实现

    添加权限的方法是在 AndroidManifest.xml 文件中添加以下代码:&lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"&gt; 二、判断 GPS 模块是否存在或者是开启 在使用 GPS 设备之前,需要判断 ...

Global site tag (gtag.js) - Google Analytics