如何使用 GoogleClient 获取准确的纬度和经度值

我不明白为什么我没有使用下面的代码接收准确的经纬度值,有人可以建议我获得准确的经纬度值

代码

    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();
        }
    }
qq872167458 回答:如何使用 GoogleClient 获取准确的纬度和经度值

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/863386.html

大家都在问