更改locationEngine请求间隔

问题描述 投票:0回答:1

我在我的应用程序中使用mapbox。在构建我的locationEngine请求时,我传递20000毫秒,但在某个时刻,我需要更改该间隔,并每隔5000毫秒通知位置更改。

有没有办法改变那个间隔,或者为我的locationEngine建立另一个请求?

这是我尝试过的:

这是我初始化位置引擎的地方

   @SuppressLint("MissingPermission")
    private void initializeLocationEngine(int interval) {
        locationEngine =LocationEngineProvider.getBestLocationEngine(parentActivity);
        LocationEngineRequest request = buildEngineRequest(interval);
        locationEngine.requestLocationUpdates(request, callback, null);
        mapboxNavigation.setLocationEngine(locationEngine);
    }

当我想改变间隔时,我称之为:

  private void changeLocationEngineInterval(int interval) {
        removeLocationEngineListener();
        LocationEngineRequest request = buildEngineRequest(interval);
        if (ActivityCompat.checkSelfPermission(parentActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(parentActivity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        locationEngine.requestLocationUpdates(request, callback, null);
        mapboxNavigation.setLocationEngine(locationEngine);
    }
java android mapbox
1个回答
0
投票

间隔是对象构造函数的参数,因此您需要销毁第一个LocationEngineRequest并使用您要使用的新间隔创建另一个。

问候

编辑

我在这里放了一些示例代码。将对象作为全局变量放置是一种很好的做法,因此您可以从两种方法进行访问,并且可以在不删除的情况下覆盖它并再次创建。

public class ExampleActivity extends AppCompatActivity {

LocationEngineRequest request;

@SuppressLint("MissingPermission")
private void initializeLocationEngine(int interval) {
    locationEngine =LocationEngineProvider.getBestLocationEngine(parentActivity);
    request = buildEngineRequest(interval);
    locationEngine.requestLocationUpdates(request, callback, null);
    mapboxNavigation.setLocationEngine(locationEngine);
}

private void changeLocationEngineInterval(int interval) {
    //removeLocationEngineListener(); <-- I don't know what u doing here, but maybe you don't need
    request = buildEngineRequest(interval);
    if (ActivityCompat.checkSelfPermission(parentActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(parentActivity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    locationEngine.requestLocationUpdates(request, callback, null);
    mapboxNavigation.setLocationEngine(locationEngine);
}

我希望这可以帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.