gpt4 book ai didi

java - Google Play 服务中的 LocationRequest 不会针对设置为小于 1 秒的间隔进行更新。

转载 作者:行者123 更新时间:2023-11-29 09:30:34 33 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,我需要在其中以每秒大约 30-40 次更新的速度显示位置更新。我正在使用 Location APIs of Google Play Services ,在 Google I/O 2013 中引入。它使用融合位置提供程序(利用加速度计和其他传感器以及 GPS)来实现更准确和高效的位置跟踪。

这是我的代码:

protected void startLocationTracking() {
if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this)) {
mLocationClient = new LocationClient(this, mConnectionCallbacks, mConnectionFailedListener);
mLocationClient.connect();
}
}

private ConnectionCallbacks mConnectionCallbacks = new ConnectionCallbacks() {

@Override
public void onDisconnected() {
}

@Override
public void onConnected(Bundle arg0) {
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setFastestInterval(0);
locationRequest.setInterval(0).setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationClient.requestLocationUpdates(locationRequest, mLocationListener);
}
};

private OnConnectionFailedListener mConnectionFailedListener = new OnConnectionFailedListener() {

@Override
public void onConnectionFailed(ConnectionResult arg0) {
Log.e(TAG, "ConnectionFailed");
}
};

private LocationListener mLocationListener = new LocationListener() {

private long mLastEventTime = 0;

@Override
public void onLocationChanged(Location location) {
double delayBtnEvents = (System.nanoTime()- mLastEventTime )/(1000000000.0);
mLastEventTime = System.nanoTime();

//Sampling rate is the frequency at which updates are received
String samplingRate = (new DecimalFormat("0.0000").format(1/delayBtnEvents));

float speed = (float) (location.getSpeed() * 3.6); // Converting m/s to Km/hr
tv.setText(speed + " kmph" + ", " + samplingRate + " Hz"); //Updating UI
}
};

我在这里将优先级设置为 PRIORITY_HIGH_ACCURACY 并将间隔和最快间隔设置为 0 毫秒。但我仍然每 1 秒收到一次更新。

This pretty much looks like the update frequency of the GPS sensor of any Android phone. But I was expecting more as this is using a Fusion Sensor (which includes accelerometer). Accelerometer being part of fusion sensor should yield higher frequency than this.

我已经尝试了间隔的其他值,但无法获得小于 1 秒间隔的更新。 ACCESS_FINE_LOCATION 也用于 list 中的权限。

我是不是漏掉了什么?他们还有其他方法可以做到这一点吗?如果您能帮助我解决这个问题,我将不胜感激。

最佳答案

目前,您获取更新的速度不能超过每秒一次。这是硬件 GPS 限制。网络定位有点慢(在室内使用)——目前大约每 5 秒一次。原始加速度计数据以更高的频率进入,但在直接集成时往往会非常嘈杂。这在未来可能会有所改善,但可能不会达到您正在寻找的高频率。

关于java - Google Play 服务中的 LocationRequest 不会针对设置为小于 1 秒的间隔进行更新。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16713659/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com