【问题标题】:LocationManager's location in Android returns nullLocationManager 在 Android 中的位置返回 null
【发布时间】:2025-12-13 21:30:01
【问题描述】:

我正在设备上测试我的 Android 应用,但使用时它总是失败

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

但是,如果我使用 NETWORK_PROVIDER 而不是 GPS_PROVIDER,它可以工作。 currentLocation 返回 null。

我该如何处理?我需要在我的 locationListener 中添加任何特定内容吗?

谢谢!

【问题讨论】:

    标签: java android location locationmanager


    【解决方案1】:

    GPS_PROVIDER 可能无法在有限的地方工作,假设在房子里或类似的地方。您应该以这样一种方式对其进行编程,即如果 gps 提供商提供空位置,那么您可以使用网络提供商作为替代方案,尽管它的准确性不是那么高。 这里还有另一个问题。您的代码应如下所示:

         if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
    {
         locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
        currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    }
    

    【讨论】:

    • 它被启用然后也给null
    【解决方案2】:

    首先,检查设备状态栏上的 GPS 图标是否已经停止闪烁,表明您确实有 GPS 锁定。

    如果当前位置未知,则调用返回 null,例如如果您缺少 GPS 锁定。

    【讨论】:

    • 有没有办法以编程方式保护 GPS 锁定?
    • GPS 锁定表示设备已成功从 GPS 卫星获取位置。因此,当您询问 GPS 位置时,设备会开始连接卫星,这需要一些时间,如果您在室内,可能根本不会成功。我建议您在着手开发之前使用手机上现有的支持 GPS 的应用程序,以基本了解 GPS 的工作原理。
    最近更新 更多