【问题标题】:Android: changing the location provider dynamicallyAndroid:动态更改位置提供程序
【发布时间】:2014-08-15 04:43:52
【问题描述】:

在我的应用中,我需要获取用户的位置。由于我的应用程序会不断执行此操作,因此我想在某些条件下(在 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。

但是,这似乎不是更好的方法。那么,我想知道的是:有没有更好的方法来自动更改位置提供者?

【问题讨论】:

    标签: android geolocation android-location


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,你能把你的答案缩写一下吗,我在做一个非常相似的任务。
    • @Solx85,两年前我在以前的工作中做过这个,呵呵。我不记得确切的代码,但如果我还能找到一些东西,我会检查我的文档。 :)
    猜你喜欢
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    相关资源
    最近更新 更多