Получение значений Null для широты и долготы с использованием API-интерфейса Fuse Location?

Я пытаюсь получить широту и долготу от службы, и я получаю нулевые значения как для широты, так и для долготы. Это код, который я пытаюсь реализовать: -

public class MyService extends Service implements LocationListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
    LocationRequest mLocationRequest;
    GoogleApiClient mGoogleApiClient;
    public static Location mCurrentLocation;
    Location mLastLocation;
    public Double latitude, longitude;

    @Override
    public void onCreate() {
        //show error dialog if GoolglePlayServices not available
        if (isGooglePlayServicesAvailable()) {
            mLocationRequest = new LocationRequest();
            mLocationRequest.setInterval(10000);
            mLocationRequest.setFastestInterval(5000);
            mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
            mLocationRequest.setSmallestDisplacement(0f);  /* min dist for location change, here it is 10 meter */
            mGoogleApiClient = new GoogleApiClient.Builder(this)
                    .addApi(LocationServices.API)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .build();

            mGoogleApiClient.connect();
        }
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
        return super.onStartCommand(intent, flags, startId);
    }

    //Check Google play is available or not
    private boolean isGooglePlayServicesAvailable() {
        int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
        return ConnectionResult.SUCCESS == status;
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onLocationChanged(Location location) {


    }

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {

    }

    @Override
    public void onProviderEnabled(String s) {

    }

    @Override
    public void onProviderDisabled(String s) {

    }

    @Override
    public void onConnected(@Nullable Bundle bundle) {
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
                mGoogleApiClient);
                if (mLastLocation != null) {
                    latitude = mLastLocation.getLatitude();
                    mLastLocation.getLongitude();
                }

        Toast.makeText(this, "LatLang " + latitude + " " + longitude, Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onConnectionSuspended(int i) {

            }

            @Override
            public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

            }
        }

Я новичок в программировании, поэтому любая помощь или предложение приветствуются. Спасибо.


person AndroidNewBee    schedule 29.11.2016    source источник
comment
Вы должны правильно использовать разрешение среды выполнения для Android API уровня 6.0 и выше, следуйте stackoverflow.com/questions/40783020/   -  person Ready Android    schedule 29.11.2016
comment
@ReadyAndroid Я не тестирую его на 6.0, я развлекаюсь на 4.4 (KitKat)   -  person AndroidNewBee    schedule 29.11.2016
comment
@AndroidNewBee Вы получите значение широты и долготы в методе onLocationChanged(). Теперь вы пытаетесь получить последнее местоположение, которое может не быть сохранено на вашем устройстве, из-за чего вы получаете нулевые значения.   -  person Anil Ravsaheb Ghodake    schedule 29.11.2016
comment
@AndroidNewBee Пожалуйста, проверьте этот пример Fused Listener для получения более подробной информации. Сообщите мне, если появится какая-либо ошибка   -  person Anil Ravsaheb Ghodake    schedule 29.11.2016