我不明白为什么我没有使用下面的代码接收准确的经纬度值,有人可以建议我获得准确的经纬度值
代码
private void initializingGoogleApi() {
try {
int currentApiVersion = Build.VERSION.SDK_INT;
if (currentApiVersion >= Build.VERSION_CODES.M) {
checkLocationmanifestPermissionSets();
} else {
registerGoogleclient();
}
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
/**
* @param location
*/
@Override
public void onLocationChanged(Location location) {
location.getaccuracy();
latLng = new LatLng(location.getLatitude(),location.getLongitude());
latitude = latLng.latitude;
longitude = latLng.longitude;
Toast.makeText(Formactivity.this,"Lat-> " + latitude + "Long-> " + longitude,Toast.LENGTH_SHORT).show();
}
/**
* checkManifestPermissionSets
* checkManifestPermissionSets
*/
@Targetapi(23)
private void checkLocationmanifestPermissionSets() {
int fineLocationPermission = Formactivity.this.checkSelfPermission(Manifest.permission.accESS_FINE_LOCATION);
int accessCoarseLocationPermission = Formactivity.this.checkSelfPermission(Manifest.permission.accESS_COARSE_LOCATION);
List<String> permissions = new ArrayList<String>();
if (fineLocationPermission != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.accESS_FINE_LOCATION);
}
if (accessCoarseLocationPermission != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.accESS_COARSE_LOCATION);
}
if (!permissions.isEmpty()) {
requestPermissions(
permissions.toArray(new String[permissions.size()]),Constants.REQUEST_CODE_LOCATION_PERMISSIONS);
} else {
registerGoogleclient();
}
}
/**
* registerGoogleclient
*/
private void registerGoogleclient() {
try {
// Create an instance of GoogleAPIClient.
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(Formactivity.this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
connectGoogleApiClient();
}
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
/**
* @param i
*/
@Override
public void onConnectionSuspended(int i) {
mGoogleApiClient.connect();
}
/**
* @param connectionResult
*/
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
/**
* onStart
*/
@Override
public void onStart() {
super.onStart();
try {
connectGoogleApiClient();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
private void connectGoogleApiClient() {
try {
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
}
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
private void disConnectGoogleApiClient() {
try {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
/**
* onStop
*/
@Override
public void onStop() {
super.onStop();
disConnectGoogleApiClient();
}
@Override
public void onConnected(Bundle connectionHint) {
try {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(1000); //1 seconds
mLocationRequest.setfastestInterval(1000); //1 seconds
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_accURACY);
//mLocationRequest.setSmallestDisplacement(0.1F); //1/10 meter
if (activityCompat.checkSelfPermission(Formactivity.this,Manifest.permission.accESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED && activityCompat.checkSelfPermission(Formactivity.this,Manifest.permission.accESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,this);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}