在我的应用中,我需要获取用户的位置。由于我的应用程序将不断进行,我想在某些条件下(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。
但是,它似乎不是更好的方法。所以,我想知道的是:有更好的方法可以自动更改位置提供程序吗?
答案 0 :(得分:0)
由于没有人回答这个问题,所以我就是这样想的。
我没有在提供者之间进行更改,而是为NETWORK_PROVIDER注册了一个常量控制器。并且,根据我的条件,可以注册GPS_PROVIDER的控制器。
注册/取消注册一个提供商的位置请求更容易,而不是在它们之间不断更改。