我正在尝试在以下代码中检索我当前的位置坐标
LocationManager locationManager= (LocationManager) getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
Run Code Online (Sandbox Code Playgroud)
当提供者为“网络”时,我得到位置坐标。
当我更改位置和安全选项中的设置以启用“使用 GPS 卫星”选项时,提供商更改为“ gps ”。在这种情况下,返回的位置为空。
这可能是什么原因,如何纠正?
GPS 提供商需要一段时间才能进行修复,尤其是在之前未进行修复的情况下。getLastKnownLocation 不是阻塞调用,它会等到建立实际的实时 GPS 定位(该定位可能需要长达 1 分钟,取决于各种原因)。
另外,请确保您出于显而易见的原因在外面)。
不是简单地为 GPS 提供者调用 getLastKnownLocation,您首先需要从它请求位置更新。
下面这篇文章很好地解释了原理:http : //developer.android.com/guide/topics/location/obtaining-user-location.html
对于在 Android 上使用位置提供程序进行任何操作的任何人来说,它都是必读的。
典型的流程是:
查看下面的代码,我们正在初始化一个 MyLocationListener(以跟踪手机的位置),并检索对 LocationManager 的引用。我们正在从位置管理器请求位置更新。我们使用 10 米的 minDistance(通知的最小距离间隔)和 35 秒的 minTime(通知的最小时间间隔)。
LocationListener locationListener = new MyLocationListener();
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, this.locationListener);
Run Code Online (Sandbox Code Playgroud)
在实现这一点时,您可能会注意到 MyLocationListener 收到的更新比您预期的要多(给定 minTime 和 minDistance 参数)。http://blog.doityourselfandroid.com/2010/12/25/understanding-locationlistener-android/ 上的以下文章可以帮助您理解原因。
| 归档时间: |
|
| 查看次数: |
8156 次 |
| 最近记录: |