繁体   English   中英

Android应用程序中的GPS_PROVIDER错误

[英]GPS_PROVIDER Error in Android Application

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

这是代码

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

当我用"GPS_PROVIDER"替换"NETWORK_PROVIDER"时,该位置变为null。

我在清单中添加了以下三个权限

<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"/>

GPS位置为空可能有两个原因

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

根据文件

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

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

编辑:
还可以尝试使用GPS_PROVIDER运行requestLocationUpdates() ,也可以使用NETWORK_PROVIDER运行两次。 LocationManager以最快的方式检索位置并停止搜索。 由于GPS位置的检索速度比网络位置慢,因此如果发现GPS位置因此返回null,则会立即停止。

当我用“GPS_PROVIDER”替换“NETWORK_PROVIDER”时,该位置变为null

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

在此输入图像描述

记住文档:

如果当前禁用了提供程序,则返回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!
    }
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM