我已在我的应用中实施了Google Play服务的融合位置功能,以获得持续的用户位置。 当wifi开启时,一切正常
但是当我关闭wifi时,它会使用手机信息更新用户位置,因此准确度超过700米。
我想要的是当wifi关闭然后从GPS获取用户位置。
protected synchronized void buildGoogleApiClient() {
Log.i(TAG, "Building GoogleApiClient");
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
createLocationRequest();
}
protected void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
@Override
public void onConnected(Bundle connectionHint) {
Log.i(TAG, "Connected to GoogleApiClient");
if (mCurrentLocation == null) {
mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
mLastUpdateTime = DateFormat.getTimeInstance().format(new Date());
updateUI();
}
if (mRequestingLocationUpdates) {
startLocationUpdates();
}
}
@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
mLastUpdateTime = DateFormat.getTimeInstance().format(new Date());
updateUI();
Toast.makeText(this, getResources().getString(R.string.location_updated_message),
Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:0)
使用位置服务的应用必须请求位置权限。 Android提供两种位置权限:ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION。您选择的权限决定了API返回的位置的准确性。
换句话说,您选择的权限决定了将用于确定位置的提供者,然后也会影响准确性,如下所示: ACCESS_FINE_LOCATION - > Gps,Cell,Wifi ACCESS_COARSE_LOCATION - >仅限Cell和Wifi
准确性取决于提供者。但结合优先级LocationRequest.PRIORITY_HIGH_ACCURACY - >您的应用可能会使用GPS来确定您的位置。