Android:动态更改位置提供程序

时间:2014-06-24 19:32:00

标签: android geolocation android-location

在我的应用中,我需要获取用户的位置。由于我的应用程序将不断进行,我想在某些条件下(GPS和NETWORK提供商之间)更改位置提供商。我的应用程序将检测这些情况并进行更改。

但是,我不确定如何动态更改它。

到目前为止,我有一个线程(除其他外,将检查这些条件),我希望它也可以更改位置提供程序。我的代码到现在为止如下:

public void run() {

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    LocationListener locationController = new LocationController();

    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, time, desltaDistance, locationController );

    while (serviceIsRunning) {
        ...
        if (conditionsAreMet) {
            locationManager.removeUpdates(locationController);
            if (provider == LocationManager.GPS_PROVIDER)
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, time, desltaDistance, locationController );
            else
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, time, deltaDistance, locationController );
        }
        ...
    }
}

* LocationController类实现LocationListener。

但是,它似乎不是更好的方法。所以,我想知道的是:有更好的方法可以自动更改位置提供程序吗?

1 个答案:

答案 0 :(得分:0)

由于没有人回答这个问题,所以我就是这样想的。

我没有在提供者之间进行更改,而是为NETWORK_PROVIDER注册了一个常量控制器。并且,根据我的条件,可以注册GPS_PROVIDER的控制器。

注册/取消注册一个提供商的位置请求更容易,而不是在它们之间不断更改。