Получите дом, работу и отмеченные местоположения пользователя, как это делает Google Inbox

Когда в папке «Входящие» вы откладываете сообщение и выбираете «Выбрать место», он показывает список с вашим домашним и рабочим адресом (из Google Now), а также отмеченные места из вашего профиля Google Maps. Другие приложения Google, такие как Keep, также предоставляют аналогичные функции.

Я хотел бы реализовать это в своем приложении, но не смог найти правильный API, который предоставляет эту информацию. Это то, что Google не раскрывает третьим сторонам (я думаю, здесь есть место для злоупотреблений)?

Если нет, то как это можно реализовать? Какой API имеет данные?

введите описание изображения здесь


person Krzysztof Kozmic    schedule 06.09.2015    source источник
comment
Google не предоставляет эту информацию из своего API... Здесь есть предложение по росе stackoverflow.com/questions/16177235/ вы можете попробовать, но они не будут не дам вам домашний или рабочий адрес   -  person Verma    schedule 09.09.2015
comment
Я видел этот вопрос. Я понимаю, что нигде нет .getHomeLocation() и .getWorkLocation(), и это нормально. Но тогда Google Inbox каким-то образом получает эти значения. Должен быть способ.   -  person Krzysztof Kozmic    schedule 09.09.2015
comment
@KrzysztofKozmic возможно, Inbox использует частный API для доступа к этой информации.   -  person Whymarrh    schedule 09.09.2015
comment
или что googleinbox выполняет вызов со стороны сервера, и вызов ограничен googleIPs   -  person N Dorigatti    schedule 09.09.2015
comment
Список каким-то образом попадает в мой телефон...   -  person Krzysztof Kozmic    schedule 09.09.2015
comment
@Heyyou Конечная цель состоит в том, чтобы пользователи выбирали место, которое в 99% случаев будет их домом или работой, поэтому возможность иметь его прямо в списке имеет смысл.   -  person Krzysztof Kozmic    schedule 12.09.2015


Ответы (2)


Google Now использует аналитику данных о вашем местоположении (на всех без исключения устройствах, подключенных к службам определения местоположения Google +, включенным в настройках вашей учетной записи Google), чтобы определить ваше домашнее и рабочее местоположение, если вы не указали их специально.

Хранение/извлечение этих данных нигде явно не упоминается в официальной документации Google, но схема в Google Now для этих данных доступна здесь: Схема Google — Пользователь

Для любой данной сущности человека существует свойство homeLocation и workLocation с этими данными.

В качестве альтернативы (или в дополнение к этому) с помощью платформы Google Plus или Google Identity Platform, если у вас есть аутентифицированный пользователь, вы можете выполнить вызов API, как описано здесь (с примерами), чтобы получить любое из указанных полей для текущего пользователя (включая currentLocation , организации (в том числе работающие) с адресами, если пользователь их предоставил).

Предыдущий вопрос SO, который ссылается на использование oAuth и необработанных URL-адресов каналов Google Maps для извлечения данных, существует, но принятый ответ несколько неясен, и когда я перешел по ссылкам и попытался пройти аутентификацию, чтобы проверить его, я получил 404 ошибки от всех из них: Доступ к местоположениям в Моих местах определенного аккаунта через Google Maps API

Также как и в сообщении на форумах по продуктам Google здесь несколько лет назад предыдущая версия API данных Google Maps разрешала доступ к Моим местам, что, по сути, именно то, что вам нужно, но она устарела и была удалена в 2013 году.

Наконец, и это, на мой взгляд, лучший подход, и, возможно, это то, что использует Google (если он не объявлен как Google Now), то есть API контактов Google. Пользователь существует в своем собственном списке контактов, а обширный API для контактов Google позволяет вам получать/устанавливать адреса со стандартными метками, такими как домашний или рабочий для пользователя.

Все это подробно описано здесь: Службы контактов Google – сценарии приложений.

person Tyler James Harden    schedule 16.09.2015
comment
Спасибо, это несколько интересных указателей и путей для расследования. На выходных попробую поэкспериментировать. Пока я воздержусь от принятия ответа на случай, если кто-то предоставит рабочий образец POC. - person Krzysztof Kozmic; 17.09.2015
comment
Обновление: Google Now поддерживает свои собственные местоположения «Дом/Работа», которые вы можете установить вручную, но которые автоматически выводятся на основе другой доступной информации, в первую очередь ваших маршрутов Google Maps в/из местоположений в обычное рабочее время и в каком месте вы спите. каждую ночь (хотя фактическая логика того, что составляет сон, я допускаю). - person Tyler James Harden; 24.05.2016

Вот API для получения адресов пользователей

https://developers.google.com/android/reference/com/google/android/gms/identity/intents/Address

mGoogleApiClient = new GoogleApiClient.Builder(this)
        .addApi(Address.API, new Address.AddressOptions())
        .build();
mGoogleApiClient.connect();
...
Address.requestUserAddress(mGoogleApiClient, UserAddressRequest.newBuilder().build(), REQUEST_CODE);


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    ...
    UserAddress address = UserAddress.fromIntent(data);
}

В зависимостях

compile 'com.google.android.gms:play-services-identity:7.8.0'

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

person Stas Parshin    schedule 12.09.2015
comment
Адрес пользователя всегда равен нулю. Примерка на реальном устройстве с действительным пользователем - person iHS; 21.12.2016