Android应用程序中的GPS_PROVIDER错误

时间:2012-10-21 02:22:02

标签: android android-location

我创建了一个Android应用来检索位置。我尝试使用GPS_PROVIDER,它返回null ..但是当我使用NETWORK_PROVIDER时工作顺利..任何人都可以帮我解决这个问题吗?

这是代码

  

位置位置=   locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

当我将"NETWORK_PROVIDER"替换为"GPS_PROVIDER"时,该位置变为空。

我在清单

中添加了以下三个权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

3 个答案:

答案 0 :(得分:2)

GPS位置无效可能有两个原因

  1. 可能是您的GPS未激活。尝试通过setting menu => Location & Security => Check Use GPS Satellites
  2. 激活您的GPS
  3. 可能是您目前在GPS无法正常工作的建筑物中。从大楼出来检查一下。这可能发生在大部分时间。

答案 1 :(得分:0)

根据documentation

  

如果当前禁用了提供程序,则返回null。

确保您的GPS在设备上处于活动状态,因此您不会收到空。

修改
另请尝试使用requestLocationUpdates()运行GPS_PROVIDER,也可以使用NETWORK_PROVIDER运行两次。 LocationManager以最快的方式检索位置并停止搜索。由于GPS位置的检索速度比网络位置慢,因此如果找到它,则会立即停止,因此会为GPS返回null。

答案 2 :(得分:0)

  

当我替换&#34; NETWORK_PROVIDER&#34;时,该位置变为null。通过   &#34; GPS_PROVIDER&#34;

要解决此问题,请务必启用位置服务

enter image description here

记住文档:

  

如果当前禁用了提供程序,则返回null。

作为一种选择,如果GPS被禁用,您可以使用这两个提供商,然后检查网络提供商:

...
 myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
 if(myLocation == null) {
            myLocation = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
 }

    if(myLocation != null) {
         //Get values for latitude and longitude!
    }
...