我在我的应用程序中使用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);
}
间隔是对象构造函数的参数,因此您需要销毁第一个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);
}
我希望这可以帮到你。