requestLocationUpdates在Android中的间隔不会更新

时间:2010-10-22 15:11:49

标签: android gps location locationmanager

我遇到的问题是我的服务实现了LocationListener,它似乎每500毫秒收到一次GPSupdate。无论我在requestLocationUpdates函数中放入什么minTime。

我的代码:

public class LocationService extends Service implements LocationListener {

    LocationManager locMan;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER;
        locMan.requestLocationUpdates( LocationManager.GPS_PROVIDER, 60000, 1, this); 

    }

    public void onLocationChanged(Location location) {
        Log.d( "Loc", "Location has been changed" );
    }
}

在我的主要活动中的一个按钮中,我将调用startService(),之后它应该在后台运行,但它会持续更新。

1 个答案:

答案 0 :(得分:1)

我发现你的情况有些不对劲:

GPS的准确度最多约为3米,而且处于最佳状态。因此,如果位置改变1米,请求更新是没有意义的。当实际上设备静止不动时,GPS噪声可以很容易地指示移动。将minDistance设为至少10是我的建议。

我不明白你为什么要调用isProviderEnabled(),因为你没有对返回的值做任何事情。

你说在startService()之后应该在后台运行,但事实并非如此。除非您为其创建某种后台线程,否则服务不会在后台运行。在这个答案中有太多内容可以解释服务是如何运作的。上网并做一些阅读,或者获得一本关于Android开发的好书。