Obtener la casa del usuario, el trabajo y las ubicaciones con estrellas como Google Inbox no
Cuando estás en la bandeja de entrada de Google, vas a suspender un mensaje y selecciona "Elegir lugar", muestra una lista con tu dirección de casa y de trabajo (de Google Now), así como las ubicaciones destacadas de tu perfil de Google Maps. Otras aplicaciones de Google, como Keep, también ofrecen funcionalidad similar.
Me gustaría implementar esto en mi aplicación, pero no pude encontrar la API correcta que expone esa información. ¿Es eso algo que Google no expone a terceros (supongo que hay espacio para el abuso allí)?
- NPE utilizando Google maps services en mapView.onCreate (...)
- Android geocoder ubicación inversa - forma fiable para obtener la ciudad?
- Cómo hacer que el contenido de la ventana de información del marcador haga clic en android
- Google Maps V2 muestra pantalla en blanco en Android 2.2
- Google Maps v2 Projection.toScreenLocation (...) muy lento
Si no es así, ¿cómo puede implementarse esto? ¿Qué API tiene los datos?
- Navegación de Android google map turn by turn
- MapView v2 manteniendo el contexto alrededor
- Npm WARN [email protected] requiere un par de react @> = 15.4.0 pero no se ha instalado ninguno
- ¿Cómo mostrar un mapa en una mapactividad de Android?
- Error al inicializar GoogleService
- NullPointerException cuando se utiliza RelativeLayout como InfoWindow personalizado
- Google Maps Android API no coincide entre cliente y paquete
- MarkerClick funciona pero InfoWindowClick no abre ViewModel
Google Now utiliza analíticas en los datos de ubicación (en todos y cada uno de los dispositivos que están registrados en los servicios de ubicación de Google + habilitados en la configuración de su cuenta de Google) para determinar las ubicaciones de su hogar y trabajo, a menos que las establezca específicamente.
El almacenamiento / recuperación de estos datos no se hace referencia explícita en ninguna parte que he encontrado en la documentación oficial de Google, pero el esquema de Google Now para estos datos está disponible aquí: Google Schema – Persona
Para cualquier entidad de una homeLocation
workLocation
, existe una propiedad de workLocation
homeLocation
y workLocation
con esos datos.
Si tiene un usuario autenticado, puede realizar una llamada de API como se describe aquí (con ejemplos) para obtener cualquiera de los campos especificados para el usuario actual (incluyendo CurrentLocation, organizaciones (incluyendo trabajo) con direcciones, si el usuario las ha proporcionado).
Una anterior pregunta de SO que las referencias usando oAuth y primas de Google Maps url de alimentación para extraer los datos existe, pero la respuesta aceptada es algo confuso y cuando seguí los enlaces y intentó autenticado para probarlo, recibí 404 errores de todos ellos: Ubicaciones de acceso en Mis sitios de una cuenta determinada a través de la API de Google Maps
También como en un foro de productos de Google publicado aquí hace varios años, una versión anterior de la API de datos de Google Maps permitía el acceso a Mis sitios , que es esencialmente exactamente lo que necesita, pero se desaprovechó y se eliminó en 2013.
Por último, y este es el mejor enfoque en mi opinión, y puede ser lo que Google utiliza (si no se declara Google Now), que es la API de Contactos de Google. Un usuario existe en su propia lista de contactos y la extensa API de Contactos de Google le permite obtener / establecer direcciones con etiquetas estándar como casa o trabajo para el usuario.
Todo esto se detalla aquí: Servicios de contacto de Google – Scripts de aplicación
Aquí está la API para obtener las direcciones de los usuarios
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); }
En dependencias
compile 'com.google.android.gms:play-services-identity:7.8.0'
No hay direcciones de trabajo ni de casa aquí, y no entiendo qué tipo de direcciones utiliza. Pero parece que todas las direcciones de usuario deben estar aquí.