API осведомленности: com.google.android.gms.common.api.ApiException: 15

В моем onCreate я вызываю следующую функцию для определения погоды.

private void detectWeather() {
        if( !checkLocationPermission() ) {
            return;
        }

        Awareness.getSnapshotClient(this).getWeather()
                .addOnSuccessListener(new OnSuccessListener<WeatherResponse>() {
                    @Override
                    public void onSuccess(WeatherResponse weatherResponse) {
                        Weather weather = weatherResponse.getWeather();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.e("Testing", "Could not get weather: " + e);
                    }
                });
    }

В моем файле манифеста я добавил следующие метаданные и разрешения:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />

<meta-data
    android:name="com.google.android.awareness.API_KEY"
    android:value="MYKEY"/>

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="MYKEY"/>

И в моем файле Gradle я добавил следующие зависимости.

compile 'com.google.android.gms:play-services:+'
compile 'com.google.android.gms:play-services-gcm:+'
compile 'com.google.android.gms:play-services-location:+'
compile 'com.google.android.gms:play-services-awareness:+'

Приложение запускается нормально и обращается к API осведомленности, однако в журнале появляется следующая ошибка: com.google.android.gms.common.api.ApiException: 15. Я не могу найти объяснение этой ошибки ни в документации, ни в Google/Stackoverflow. Я упускаю что-то очевидное?


person Bram    schedule 18.11.2017    source источник
comment
Вы нашли, что было не так?   -  person Keval Patel    schedule 30.01.2018
comment
Я обнаружил, что код ошибки 15 относится к TIMEOUT. См.: developers.google.com/android/reference/com/google/android/gms/   -  person Keval Patel    schedule 30.01.2018
comment
Да, согласно документации по адресу: developers.google.com/awareness/android- api/начало работы @ArghadipDasCEO   -  person Bram    schedule 11.02.2018


Ответы (1)


Для будущих читателей информация о погоде и месте больше не поддерживается в Google Awareness API.

Альтернативой является NumberEight SDK, который может делать гораздо больше, чем осведомленность (хотя региональное разделение не требуется). доступны на момент написания статьи).

Он выполняет широкий спектр задач распознавания контекста как на iOS, так и на Android, включая:

  • Обнаружение физической активности в режиме реального времени
  • Текущие категории мест
  • Обнаружение движения
  • Доступность
  • Местная погода

Он также может записывать пользовательский контекст для отчетов и анализа через онлайн-портал.

Чтобы быстро получать обновления погоды на Java, вы должны написать:

NumberEight ne = new NumberEight();

ne.onWeatherUpdated(
    new NumberEight.SubscriptionCallback<NEWeather>() {
        @Override
        public void onUpdated(@NonNull Glimpse<NEWeather> glimpse) {
            Log.d("CurrentWeather", glimpse.getMostProbable().toString());
        }
    });

Вот некоторые примеры iOS и Android.

Раскрытие информации: я один из разработчиков.

person Chris Watts    schedule 27.04.2020