RxJava получить GPS и слитое местоположение - PullRequest
0 голосов
/ 11 июля 2019

У меня есть два метода в моем приложении, чтобы получить местоположение пользователя.Оба метода возвращают Observable.Первый способ получает GPS-местоположение через Location Manager.Второй метод получает Fused Location.


    @SuppressLint("MissingPermission")
    public Observable<Location> getRxGpsLocation(boolean single)
    {
        PublishSubject<Location> subject = PublishSubject.create();

        LocationManager locationManager = (LocationManager) activity.getSystemService(LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000,
                5, new LocationListener()
                {
                    @Override
                    public void onLocationChanged(Location location)
                    {
                        subject.onNext(location);

                        if (single)
                        {
                            locationManager.removeUpdates(this);
                            subject.onComplete();
                        }
                    }

                    @Override
                    public void onStatusChanged(String provider, int status, Bundle extras)
                    {

                    }

                    @Override
                    public void onProviderEnabled(String provider)
                    {

                    }

                    @Override
                    public void onProviderDisabled(String provider)
                    {
                        Log.e(TAG, "onProviderDisabled: Disableeedd");
                        if (single)
                        {
                            locationManager.removeUpdates(this);
                        }
                        subject.onError(new Throwable("Error nit found Location"));
                    }
                });

        return subject;
    }


    //I use this library to get Fused Location https://github.com/patloew/RxLocation
    @SuppressLint("MissingPermission")
    public Observable<Location> getRxFusedLocation()
    {
        RxLocation rxLocation = new RxLocation(AppClass.getApp());
        LocationRequest locationRequest = LocationRequest.create()
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
                .setNumUpdates(1)
                .setInterval(1000);

        return rxLocation.location().updates(locationRequest);
    }

Таким образом, моя цель состоит в том, чтобы сделать эту цепочку запросов:

  1. Запрос местоположения GPS
  2. Если получил местоположение GPS,чем вернуть
  3. Если в течение 15 секунд не удалось получить местоположение GPS, отмените запрос GPS и запустите объединенный запрос местоположения

Как я могу объединить эти два метода в одном с таймером 15 с после первогопросить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...