如何经常更新GPS位置?

时间:2011-11-30 18:46:18

标签: android gps

我正在编写一个应用程序,在谷歌地图中显示您的位置... 到目前为止,这么好......它确实显示了我的位置

问题是,如果我正在移动(或确实如此,但仅在一段时间后),这个gps不会更新

有没有人知道如何以原生谷歌地图(对于Android)的方式做到这一点? 也就是说,如果您点击“我的位置”,它会显示一个闪烁的蓝点,当您移动时会发生变化......

这是我的代码:

//Initializing the listeners        
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 35000, 10, networkLocationListener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, gpsLocationListener);



//and now, in both 'networkLocationListener' and 'gpsLocationListener'
//I overwrite the method 'onLocationChanged':

@Override
public void onLocationChanged(Location location) {
    Log.i("test", "New network location: "+location.getLatitude()+
                  " , "+location.getLongitude());
    myLongitude= location.getLongitude();
    myLatitude= location.getLatitude(); 
}

//and the variables myLongitude and myLatitude are the only ones that I need to display my
//position in the map...

有人知道我错过了什么吗?

2 个答案:

答案 0 :(得分:5)

您正在使用的方法调用是requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener),并且您告诉它仅每35000毫秒或每35秒为您提供一次更新。尝试将该数字降低到适合您的数量。数字越小意味着电池使用量越多。

如果您需要MapView上的指标,请查看MyLocationOverlay

答案 1 :(得分:1)

你不想永远这样离开它,但是如果你还没有给出一个镜头,那么将minTime和minDistance值设置为零可能是值得的。

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener);
  

如果minTime大于0,则LocationManager可能会在位置更新之间休息几分钟,以节省电量。如果minDistance大于0,则仅当设备移动minDistance米时才会广播位置。要尽可能频繁地获取通知,请将两个参数都设置为0。

- requestLocationUpdates Reference