2015-09-06 26 views
26

W skrzynce odbiorczej Google po odłożeniu wiadomości i wybraniu "Wybierz miejsce" wyświetlana jest lista z adresem domowym i służbowym (z Google Now) oraz oznaczone gwiazdkami lokalizacje z Twojego profilu Google Maps. Inne aplikacje Google, takie jak Keep, również zapewniają podobną funkcjonalność.Uzyskiwanie lokalizacji domu, pracy i miejsc oznaczonych gwiazdką, takich jak Skrzynka odbiorcza Google, powoduje:

Chciałbym zaimplementować to w mojej aplikacji, ale nie mogłem znaleźć odpowiedniego interfejsu API, który udostępniłby te informacje. Czy to jest coś, czego Google nie ujawnia stronom trzecim (wydaje mi się, że jest tam miejsce na nadużycia)?

Jeśli nie, w jaki sposób można to zrealizować? Jakie API ma dane?

enter image description here

+0

Google nie udostępnia te informacje z ich API ... Jest rosa sugestia tutaj http://stackoverflow.com/questions/16177235/how-to-get -the-user-home-work-location-for-a-user-in-android możesz spróbować, ale nie dadzą ci adresu "Home" lub "Work" – Verma

+0

Widziałem to pytanie. Rozumiem, że nie ma ".getHomeLocation()" i ".getWorkLocation()" w dowolnym miejscu i jest OK. Ale potem Skrzynka odbiorcza Google odbiera te wartości skądś. Musi być jakiś sposób. –

+0

@ KrzysztofKozmic jest możliwe, że Inbox używa prywatnego API do uzyskania dostępu do tej informacji – Whymarrh

Odpowiedz

1

Oto API dla uzyskania adresów użytkownika

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); 
} 

W zależności

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

Nie ma domu lub pracy adresy tutaj i don” t rozumiem, jaki rodzaj adresów to ses. Wygląda jednak na to, że powinny tu być adresy wszystkich użytkowników.

+1

UserAddress ma zawsze wartość NULL. Próba na prawdziwym urządzeniu z ważnym użytkownikiem – iHS

12

Google Now wykorzystuje dane analityczne dotyczące danych o Twojej lokalizacji (na wszystkich urządzeniach zalogowanych w Google + usług lokalizacyjnych włączonych w ustawieniach konta Google), aby określić lokalizacje domu i pracy, chyba że je skonfigurujesz.

Przechowywanie/pobieranie tych danych nie jest wyraźnie odwołuje się nigdzie, że znalazłem się w oficjalnej dokumentacji Google, ale schemat w Google Now dla tych danych jest dostępna tutaj: Google Schema - Person

Dla danego podmiotu, osoby, z tymi danymi istnieje właściwość homeLocation i workLocation.

Alternatywnie (lub oprócz), używając Plus Platformy Google/Google Identity Platformy, jeśli masz uwierzytelnionego użytkownika, można wykonać połączenie API jak opisano here (with examples) dostać żadnej z wymienionych dziedzin dla bieżącego użytkownika (w tym currentLocation, organizacje (w tym pracy) z adresami, jeśli użytkownik je dostarczył).

Poprzednie pytanie dotyczące SO, które odwołuje się do adresów URL oAuth i surowych map Google Maps w celu pobrania danych, ale zaakceptowana odpowiedź jest niejasna, a po sprawdzeniu poprawności linków i próbie uwierzytelnienia otrzymałem 404 błędy od wszystkie z nich: Access locations in My Places of a particular account through Google Maps API

również jak w produkcie Google Forum publikowania here kilka lat temu, poprzednia wersja Map Google Data API wstępu do Moje miejsca, co jest kwintesencją dokładnie to, co trzeba, ale został wycofany i usunięty w 2013 r.

Wreszcie, jest to moim zdaniem najlepsze podejście i może być tym, co Google używa (jeśli nie jest zgłoszone jako Google Now), czyli Google Contacts API. Użytkownik istnieje na własnej liście kontaktów, a rozbudowany interfejs API dla Kontaktów Google pozwala uzyskać/ustawić adresy za pomocą standardowych etykiet, takich jak dom lub praca dla użytkownika.

To wszystko jest szczegółowo tutaj: Google Contact Services - App Scripts

+1

Dzięki, to jest kilka interesujących wskazówek i dróg dochodzenia. Spróbuję z nim eksperymentować przez weekend. Na razie wstrzymam się z zaakceptowaniem odpowiedzi na wypadek, gdyby ktoś dostarczył próbną próbkę POC. –

+0

Aktualizacja: Google Now utrzymuje własne ustawienia Dom/Praca, które można ustawić ręcznie, ale są one automatycznie wyprowadzane na podstawie innych dostępnych informacji, przede wszystkim tras w Mapach Google do/z lokalizacji podczas typowych godzin pracy i wybranej lokalizacji każdej nocy (choć faktyczna logika stojąca za tym, co stanowi "spanie w", jest przeze mnie zakładana). –