Android:如何在提供更准确的位置之前保持GPS处于活动状态?

时间:2010-01-02 21:58:15

标签: android geolocation gps

我正在使用位置管理器的requestLocationUpdates()方法定期向广播接收器接收意图。系统正确地向我的接收器发出意图,我已经能够正确使用它。唯一的问题是GPS位置提供商在初始位置获取后仅保持活动状态几秒钟,我需要它保持更长时间,以便位置估计更准确。

我的问题是如何使GPS位置提供程序对来自LocationManager requestLocationUpdates的每个定期请求保持活动状态。有谁知道怎么做?

4 个答案:

答案 0 :(得分:7)

尝试这样的事情。我认为这是正确的方法

private void createGpsListner()
{
    gpsListener = new LocationListener(){
        public void onLocationChanged(Location location)
        {
           curLocation = location;

           // check if locations has accuracy data
           if(curLocation.hasAccuracy())
           {
               // Accuracy is in rage of 20 meters, stop listening we have a fix
               if(curLocation.getAccuracy() < 20)
               {
                   stopGpsListner();
               }
           }
        }
        public void onProviderDisabled(String provider){}
        public void onProviderEnabled(String provider){}
        public void onStatusChanged(String provider, int status, Bundle extras){}
    };
}

private void startGpsListener()
{

    if(myLocationManager != null)
        // hit location update in intervals of 5sec and after 10meters offset
        myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, gpsListener);   
}

private void stopGpsListner()
{
    if(myLocationManager != null)
        myLocationManager.removeUpdates(gpsListener);
}

答案 1 :(得分:0)

如果你保持LocationListener处于活动状态,如果修复精度变窄,它应该继续接收对onLocationChanged()的更新。确实location.getAccuracy()会告诉你当前的准确度

可能将minTime和minDistance设置为0以接收频率更高的更新?将使用更多的电池,但更准确。

答案 2 :(得分:0)

有一个关于通过超时获取GPS位置的示例。

http://sikazi.blogspot.com/2010/09/android-gps-timeout.html#more

答案 3 :(得分:0)

要定期获取GPS位置,请从 locationListener onLocationChanged 方法获取位置,并在 onResume 方法中指定{{1}中的时间获取定期更新

milliseconds