Android获取位置无法正常工作

时间:2013-04-22 00:01:24

标签: android gps location locationmanager

我试图获取位置和代码工作,但它无法正常工作。这是我的代码

    // Get the location manager
    LocationManager locationManager = (LocationManager)                 
    getSystemService(LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String bestProvider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(bestProvider);

    try {
        lat =  (int)Math.round((location.getLatitude () * 1e6) ) ;
        lon =   (int)Math.round((location.getLongitude() * 1e6) ) ;
    }
    catch (NullPointerException e){
        lat = -1;
        lon = -1;
    }

问题是当我使用foursqure或facebook他们直接得到位置但我的应用程序返回-1,-1(有时),有时它会准确找到位置。可能是什么问题或如何改进以使当前位置更好?感谢

2 个答案:

答案 0 :(得分:1)

您应该实现LocationListerner并请求位置更新。获得修复后,您可以删除位置更新。您可以在http://developer.android.com/reference/android/location/LocationListener.html

上阅读更多信息

答案 1 :(得分:0)

对getLastKnownLocation的调用有时会返回null,如Andorid documentation中所指定的那样。所以有时代码确实会产生lat = lon = -1。此外,getBestProvider是一种确定最符合给定条件的提供者的方法。由于您没有指定任何标准,因此合乎逻辑的结论是所有提供者都同样好,因此结果可能是随机的。最后,请注意lat = -1和lon = -1是一个有效的位置,因此通常它不是标记错误的好方法。

正如此处的另一个答案所示,您应该实施http://developer.android.com/reference/android/location/LocationListener.html。然后,您有使用哪些提供程序的问题。我的方法是使用它们并使用简单的卡尔曼滤波器来处理不同提供者在不同时间具有不同精确度的事实。我在这里发布了我用于此的简单kalman过滤器Smooth GPS data