gpt4 book ai didi

android - 我想使用 google fused location api 获得准确的位置?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:52:23 25 4
gpt4 key购买 nike

我正在使用 Fused location Api,我得到的位置精度约为 10 米。有时它提供 4 到 8 米的精度。我希望使用此融合位置 Api 或任何其他方式获得更高的准确性。有什么方法可以获取精度小于 4 米的位置。

我正在通过这种方式获取位置。

    public class GetCurrentLocation implements
ConnectionCallbacks, OnConnectionFailedListener, LocationListener {

private static final String TAG = "location-updates-sample";
public static final long UPDATE_INTERVAL_IN_MILLISECONDS = 0;
public static final long FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS =
UPDATE_INTERVAL_IN_MILLISECONDS / 2;
private final String REQUESTING_LOCATION_UPDATES_KEY = "requesting-location-updates-key";
private final String LOCATION_KEY = "location-key";
private final String LAST_UPDATED_TIME_STRING_KEY = "last-updated-time-string-key";
private GoogleApiClient mGoogleApiClient;
private LocationRequest mLocationRequest;

private Context mContext;
private getLocation mGetCurrentLocation;

public GetCurrentLocation(Context context) {
mContext = context;

buildGoogleApiClient();
}

private synchronized void buildGoogleApiClient() {
Log.i(TAG, "Building GoogleApiClient");
mGoogleApiClient = new GoogleApiClient.Builder(mContext)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
createLocationRequest();
}

public interface getLocation{
public void onLocationChanged(Location location);
}

public void startGettingLocation(getLocation location) {
mGetCurrentLocation = location;
connect();
}

public void stopGettingLocation() {
stopLocationUpdates();
disconnect();
}

private void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

private void startLocationUpdates() {
if (mGoogleApiClient.isConnected()) {
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
}
}
private void stopLocationUpdates() {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}



private void connect() {
mGoogleApiClient.connect();
}

private void disconnect() {
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}

@Override
public void onConnected(Bundle connectionHint) {
Log.i(TAG, "Connected to GoogleApiClient");
startLocationUpdates();

}

@Override
public void onLocationChanged(Location location) {
mGetCurrentLocation.onLocationChanged(location);
}

@Override
public void onConnectionSuspended(int cause) {
Log.i(TAG, "Connection suspended");
mGoogleApiClient.connect();
}

@Override
public void onConnectionFailed(ConnectionResult result) {
Log.i(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + result.getErrorCode());
}
}

我正在我的 Activity 代码中使用这个类。

private GetCurrentLocation mListen;
mListen = new GetCurrentLocation(this);
mListen.startGettingLocation(new GetCurrentLocation.getLocation() {
@Override
public void onLocationChanged(Location location) {
// Here is my working with location object
}

});

我如何优化此代码以获得准确的位置。谢谢。

最佳答案

定位精度基于 GPS/网络提供商,您只能等待并从他们那里获取位置。

您可以再次确定准确性

@Override
public void onLocationChanged(Location location) {
int suitableMeter = 20; // adjust your need
if (location.hasAccuracy() && location.getAccuracy() <= suitableMeter) {
// This is your most accurate location.
}

}

关于android - 我想使用 google fused location api 获得准确的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28366946/

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