Поиск лучшего провайдера в приложении для Android - PullRequest
2 голосов
/ 12 июля 2010

Я пытаюсь найти лучшего поставщика в этом случае ниже:

// GPS
    case R.id.main_menu_gps:

        // Set up location services
        mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        mBestProvider = mLocationManager.getBestProvider(new Criteria(), true);
        Log.d(DEB_TAG, "@@@@Value of mBestProvider is " + mBestProvider);

        if(mBestProvider != null){
            showGpsSearchingDialog();
            mLocationManager.requestLocationUpdates(mBestProvider, 150000, 1, this);
        } else {
            Log.d(DEB_TAG, "Provider is null");
            showGpsAlertDialog();
        }

    break;

Мое устройство возвращает «GPS» как лучший поставщик, но не может найти местоположение, и мой диалог прогресса отображается навсегда в поиске. Если я захожу в настройки телефона «Местоположение / Безопасность» и проверяю «Использовать беспроводные сети», лучшим провайдером является Сеть, и он работает, чтобы вернуть местоположение.

Я что-то не так делаю, когда лучшим поставщиком является GPS, а данные не возвращаются?

Ответы [ 3 ]

1 голос
/ 12 июля 2010

Вы можете взглянуть на мою стратегию, чтобы выбрать лучшего поставщика Какой самый простой и надежный способ получить текущее местоположение пользователя на Android?

0 голосов
/ 12 июля 2010

Если GPS включен, он всегда будет возвращать GPS как лучшего поставщика, поскольку вы указали пустые критерии.Исправление GPS может занять довольно длительную задержку, и если вы находитесь в здании, вы можете вообще никогда не получить исправления.Так что, если сетевое расположение будет приемлемым, то вам просто нужно сделать сеть.Или установите таймаут, чтобы в какой-то момент вы перестали ждать на gps, а затем переключились на сеть.Если вы используете MapView, вы можете использовать MyLocationOverlay, потому что его внутренняя логика будет обрабатывать это для вас.

Кстати, ваш код выглядит хорошо.

0 голосов
/ 12 июля 2010

Вы на самом деле не делаете ничего плохого, есть только определенные приемы определения местоположения с помощью GPS. Основная проблема заключается в том, что местоположение GPS может быть наилучшим доступным провайдером (с точки зрения точности), однако оно может не иметь возможности получить текущее местоположение для сети / структурного препятствия. Отсутствие логики для определения количества времени, которое прошло, пока провайдер попытался достичь местоположения безуспешно или без требуемой точности; Вы, возможно, никогда не получите местоположение через GPS, и вам придется использовать другого поставщика или последнее известное местоположение в качестве запасного варианта.

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