Непонятное текущее учебное пособие по поиску местоположения в Android - программирование
Подтвердить что ты не робот

Непонятное текущее учебное пособие по поиску местоположения в Android

Я использую код для проверки того, что на устройстве пользователя есть службы Google Play, прежде чем получать данные о местоположении из http://developer.android.com/training/location/retrieve-current.html. При копировании в мою среду IDE Eclipse правильно указывает на ошибки в строках, потому что "connectionResult" никогда не был определен и не "getSupportFragmentManager"

int errorCode = connectionResult.getErrorCode();

и

errorFragment.show(getSupportFragmentManager(),
                    "Location Updates");

Должен ли я просто создать переменную выше ConnectionResult connectionResult, чтобы исправить проблему? Я не уверен, как исправить вторую.

Кроме того, строка

mLocationClient = new LocationClient(this, this, this);

Далее по странице предлагается ввести класс MainActivity, который не удовлетворяет конструктору LocationClient, вызывая еще одну ошибку.

Обновление. Еще одна проблема с учебником. Привет всем, учебник ссылается на класс LocationResult, который он не создал здесь: http://developer.android.com/training/location/receive-location-updates.html. Как/где я должен это определять?

4b9b3361

Ответ 1

Учебник вводит в заблуждение. Если вы хотите проверить службы google play, выполните следующие действия.

int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (errorCode != ConnectionResult.SUCCESS) {
  GooglePlayServicesUtil.getErrorDialog(errorCode, this, 0).show();
}

Это автоматически отобразит соответствующее диалоговое окно ошибок, если оно не существует.

К вашей второй проблеме. Остальная часть учебника должна соблюдаться. Вам нужно реализовать GooglePlayServicesClient.ConnectionCallbacks и GooglePlayServicesClient.OnConnectionFailedListener, если вы хотите создать locationclient с помощью new LocationClient(this, this, this);

Примечание. Не пытайтесь использовать locationclient до тех пор, пока в обратном вызове не будет вызван метод onConnected.

Ответ 2

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

/**
 * Verify that Google Play services is available before making a request.
 *
 * @return true if Google Play services is available, otherwise false
 */
private boolean servicesConnected() {

    // Check that Google Play services is available
    int resultCode =
            GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

    // If Google Play services is available
    if (ConnectionResult.SUCCESS == resultCode) {
        // In debug mode, log the status
        Log.d(LocationUtils.APPTAG, getString(R.string.play_services_available));

        // Continue
        return true;
    // Google Play services was not available for some reason
    } else {
        // Display an error dialog
        Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, 0);
        if (dialog != null) {
            ErrorDialogFragment errorFragment = new ErrorDialogFragment();
            errorFragment.setDialog(dialog);
            errorFragment.show(getSupportFragmentManager(), LocationUtils.APPTAG);
        }
        return false;
    }
}

http://developer.android.com/shareables/training/LocationUpdates.zip