【问题标题】:Not able to get Location by GPS : Android无法通过 GPS 获取位置:Android
【发布时间】:2012-08-19 16:31:49
【问题描述】:

我是安卓新手。我正在尝试使用 GPS 获取我的位置。 我已包含权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>

每当我尝试使用getLastKnownLocationLocationManager 获取我的Location 时,我都会得到空对象。此外,GPS 已启用。这是我的代码:

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Location location;
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    Log.d("ManualLog", "GPS_DISABLED");
    Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(settingsIntent);
} else {
    Log.d("ManualLog", "GPS_ENABLED");
    location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}

【问题讨论】:

    标签: android android-location


    【解决方案1】:

    locationManager.getLastKnownLocation 如果 GPS 还没有时间进行修复,将返回 null。 Android 不提供“现在给我位置”方法。当 GPS 得到修复后,onLocationChanged() 将运行。它是事件驱动的,您必须耐心等待该事件。一旦 onLocationChanged() 运行,getLastKnownLocation() 将返回一个非空值。

    【讨论】:

    • 一般需要多少时间。我的意思是,我之前一直在使用 GPS,使用 Google Map 和其他应用程序。所以,它现在应该已经修复了。不是吗?
    • 这取决于你是否能清楚地看到天空等。你确定谷歌地图不只是从网络中获取位置吗?最好的办法是对其进行测试,在 onLocationChanged() 中调用 Toast 并查看需要多长时间。
    • 如何知道 GoogleMap 从 GPS 获取我的位置?此外,我已经使用 requestLocationUpdates 请求位置更新。但是,onLocationChanged 需要超过 15 分钟才能响应。因为我有一个服务正在运行,它以某种方式超时
    【解决方案2】:

    您是在模拟器还是设备上运行它? 如果在模拟器上,您可能需要通过“模拟器控制”手动将 GPS 数据发送到模拟器。在eclipse中可以找到Window>Open Perspective>DDMS。

    如果您在设备上运行,您的设备是否可能从未收到过 GPS 信号?

    【讨论】:

    • 我在一个设备上运行它,它之前有 GPS 信号。
    【解决方案3】:

    尝试将最后一行替换为:

    List<String> providers = locationManager.getProviders(true);
    if(!providers.isEmpty()) {
        location = locationManager.getLastKnownLocation(providers.get(0));
    } else {
       Log.d("ManualLog", "No provider");
    }
    

    【讨论】:

    • 它可以工作,但在这种情况下提供者是网络。我需要 GPS。
    • providers 列表中,您有 GPS 吗?也许它不是列表中的第一个元素...
    • 是的,我在“供应商”列表中有 GPS,它位于列表中的第三个元素。我更改了代码,但仍然为空。
    猜你喜欢
    • 2016-09-24
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多