2015-09-06 19 views
26

Quando in Google Posta in arrivo si passa a posticipare un messaggio e si seleziona "Seleziona luogo" viene visualizzato un elenco con l'indirizzo di casa e lavoro (da Google Now) popolato così come posizioni speciali dal tuo profilo di Google Maps. Altre app di Google, come Keep, offrono anche funzionalità simili.Ottieni luoghi di lavoro, di lavoro e speciali come Google Posta in arrivo

Vorrei implementarlo nella mia app ma non ho trovato l'API corretta che espone tali informazioni. È qualcosa che Google non espone a terze parti (immagino ci sia spazio per abusi lì)?

In caso negativo, come può essere implementato? Quale API ha i dati?

enter image description here

+0

Google non fornisce queste informazioni da loro API ... C'è rugiada suggerimento qui http://stackoverflow.com/questions/16177235/how-to-get -la-utente-casa-lavoro-posizione-per-un-utente-in-android puoi provare, ma non ti darebbero l'indirizzo "Casa" o "Lavoro" – Verma

+0

Ho visto quella domanda. Capisco che non ci sono '.getHomeLocation()' e '.getWorkLocation()' e va bene. Ma Google Inbox ottiene in qualche modo quei valori da qualche parte. Ci deve essere un modo. –

+0

@KrzysztofKozmic è possibile che Inbox utilizzi un'API privata per accedere a tali informazioni – Whymarrh

risposta

1

Ecco API per ottenere gli indirizzi degli utenti

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

In dipendenze

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

Non ci sono casa e del lavoro indirizzi qui, e io don' t capire che tipo di indirizzi ti SES. Ma sembra che tutti gli indirizzi dell'utente dovrebbero essere qui.

+1

UserAddress è sempre nullo. Provare su un dispositivo reale con un utente valido – iHS

12

Google Now utilizza l'analisi dei dati di posizione (su qualsiasi dispositivo connesso a Google + i servizi di localizzazione attivati ​​nelle impostazioni dell'account Google) per determinare la posizione di casa e di lavoro, a meno che non li imposti specificamente.

La memorizzazione/recupero di questi dati non è esplicitamente fatto riferimento da nessuna parte che ho trovato nella documentazione ufficiale di Google, ma lo schema in Google Now per questi dati è disponibile qui: Google Schema - Person

Per ogni data entità persona, una proprietà homeLocation e workLocation esiste con quei dati.

In alternativa (o in aggiunta), utilizzando Platform più di Google/Google piattaforma di identità, se si dispone di un utente autenticato, è possibile effettuare una chiamata API come descritto here (with examples) per ottenere uno dei campi specificati per l'utente corrente (inclusi currentLocation, organizzazioni (incluso il lavoro) con indirizzi, se l'utente li ha forniti).

Una precedente domanda SO che i riferimenti utilizzando OAuth e crude Google Maps alimentano gli URL per estrarre dei medesimi dati, ma la risposta accettata è un po 'poco chiaro, e quando ho seguito i link e tentato autenticato di verificare il lavoro svolto, ho ricevuto 404 errori da tutti loro: Access locations in My Places of a particular account through Google Maps API

anche come in un prodotto Google Forum inviare here diversi anni fa, una versione precedente di Google Maps API di dati ha permesso l'accesso a Risorse, che è la quintessenza esattamente ciò che serve, ma è stato ritirato e rimosso nel 2013.

Infine, questo è l'approccio migliore secondo me, e potrebbe essere ciò che Google utilizza (se non è dichiarato essere Google Now), che è l'API dei Contatti Google. Un utente esiste nel proprio elenco di contatti e l'ampia API per Contatti Google consente di ottenere/impostare indirizzi con etichette standard come casa o lavoro per l'utente.

questo è tutto dettagliato qui: Google Contact Services - App Scripts

+1

Grazie, ecco alcuni indicatori e strade interessanti per le indagini. Proverò a sperimentarlo durante il fine settimana. Per ora rimarrò in attesa di accettare la risposta nel caso qualcuno fornisca un campione di POC funzionante. Aggiornamento –

+0

: Google Now mantiene le proprie posizioni Home/Lavoro che è possibile impostare manualmente, ma che vengono dedotte automaticamente in base ad altre informazioni disponibili, in primo luogo i percorsi di Google Maps da/verso località durante le ore di lavoro tipiche e il luogo in cui si dorme ogni notte (anche se la logica attuale dietro ciò che costituisce "dormire" è assunta da me). –