我正在使用位置管理器的requestLocationUpdates()方法定期向广播接收器接收意图。系统正确地向我的接收器发出意图,我已经能够正确使用它。唯一的问题是GPS位置提供商在初始位置获取后仅保持活动状态几秒钟,我需要它保持更长时间,以便位置估计更准确。
我的问题是如何使GPS位置提供程序对来自LocationManager requestLocationUpdates的每个定期请求保持活动状态。有谁知道怎么做?
答案 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