Aplicación para Android con direcciones de voz GPS

Estoy intentando crear una aplicación de turismo para Android.

Necesito que el usuario se guíe por voz. He estado buscando en la googlemaps Android API pero no hay nada acerca de las instrucciones de voz.

¿Conoce alguna solución para esto? ¿Hay alguna otra API / SDK que pueda utilizar para implementar esto?

Gracias por adelantado.

Esa es una idea genial. Sin embargo, no sé si estás listo para reinventar la rueda para hacer eso. En caso de que lo estés, también tengo una solución, pero permítanme presentarles la manera en que resolvería este problema:

En Android, existe el sistema de intenciones que le permite llamar a aplicaciones internas para facilitar su trabajo. Entonces, ¿por qué no lanzar la aplicación Directions (Google Maps con una intención especial) ya que el usuario probablemente está familiarizado con la interfaz de usuario y probablemente le guste? Además, con esta solución, no es necesario tener cuidado de mantener sus cosas actualizadas, sólo tiene que preguntar al sistema y que va a proporcionar la solución de la caja. Y es mucho más fácil proceder de esta manera. 🙂

Para ello, usará un URI básico simple que el sistema reconocerá:

 String address = "My Fake Address"; Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?daddr=" + address)); startActivity(intent); 

Después de eso, el usuario será capaz de elegir cómo quiere ir allí y su trabajo está hecho, el usuario está satisfecho, y le gustó el 99% de las otras aplicaciones (él tiene los mensajes vocales también).

Entonces, si está en sus requisitos para tenerlo dentro de su aplicación, podría ser posible (basado en la proposición de Aster), pero usted tendrá que mantener una pista del usuario usted mismo (para poder enviar la buena instrucción a la derecha hora). Pero primero echemos un vistazo a la API de direcciones de Google, si configuras correctamente tu aplicación deberías recibir este tipo de JSON (todo el documento allí ):

 { "status": "OK", "routes": [ { "summary": "I-40 W", "legs": [ { "steps": [ { "travel_mode": "DRIVING", "start_location": { "lat": 41.8507300, "lng": -87.6512600 }, "end_location": { "lat": 41.8525800, "lng": -87.6514100 }, "polyline": { "points": "a~l~Fjk~uOwHJy@P" }, "duration": { "value": 19, "text": "1 min" }, "html_instructions": "Head \u003cb\u003enorth\u003c/b\u003e on \u003cb\u003eS Morgan St\u003c/b\u003e toward \u003cb\u003eW Cermak Rd\u003c/b\u003e", "distance": { "value": 207, "text": "0.1 mi" } }, ... ... additional steps of this leg ... ... additional legs of this route "duration": { "value": 74384, "text": "20 hours 40 mins" }, "distance": { "value": 2137146, "text": "1,328 mi" }, "start_location": { "lat": 35.4675602, "lng": -97.5164276 }, "end_location": { "lat": 34.0522342, "lng": -118.2436849 }, "start_address": "Oklahoma City, OK, USA", "end_address": "Los Angeles, CA, USA" } ], "copyrights": "Map data ©2010 Google, Sanborn", "overview_polyline": { "points": "a~l~Fjk~uOnzh@vlbBtc~@tsE`vnApw{A`dw@~w\\|tNtqf@l{Yd_Fblh@rxo@b}@xxSfytAblk@xxaBeJxlcBb~t@zbh@jc|Bx}C`rv@rw|@rlhA~dVzeo@vrSnc}Axf]fjz@xfFbw~@dz{A~d{A|zOxbrBbdUvpo@`cFp~xBc`Hk@nurDznmFfwMbwz@bbl@lq~@loPpxq@bw_@v|{CbtY~jGqeMb{iF|n\\~mbDzeVh_Wr|Efc\\x`Ij{kE}mAb~uF{cNd}xBjp]fulBiwJpgg@|kHntyArpb@bijCk_Kv~eGyqTj_|@`uV`k|DcsNdwxAott@r}q@_gc@nu`CnvHx`k@dse@j|p@zpiAp|gEicy@`omFvaErfo@igQxnlApqGze~AsyRzrjAb__@ftyB}pIlo_BflmA~yQftNboWzoAlzp@mz`@|}_@fda@jakEitAn{fB_a]lexClshBtmqAdmY_hLxiZd~XtaBndgC" }, "warnings": [ ], "waypoint_order": [ 0, 1 ], "bounds": { "southwest": { "lat": 34.0523600, "lng": -118.2435600 }, "northeast": { "lat": 41.8781100, "lng": -87.6297900 } } } ] } 

Así que lo que podría ser posible es tomar estos html_instructions y leerlos al usuario con el Android TTS Lib cuando él está en un cuadrado alrededor del start_location o la end_location . Sin embargo, puede ser muy complicado manejar este cuadrado correctamente, por eso yo usaría la primera opción que es realmente respetar el espíritu de Android.

BTW, aquí están la definición de estos atributos:

Start_location contiene las coordenadas de latitud / longitud del origen de esta pierna. Debido a que el API de rutas calcula direcciones entre ubicaciones mediante el uso de la opción de transporte más cercana (por lo general una carretera) en los puntos de inicio y fin, start_location puede ser diferente que el origen previsto de este pierna si, por ejemplo, un camino no está cerca del origen.

End_location contiene las coordenadas de latitud / longitud del destino dado de esta etapa. Debido a que el API de rutas calcula direcciones entre ubicaciones mediante el uso de la opción de transporte más cercana (por lo general una carretera) en los puntos de inicio y fin, END_LOCATION puede ser diferente que el destino previsto de este pierna si, por ejemplo, un camino no está cerca del destino.

  • Cómo simular la entrada de audio a micrófono utilizando el archivo .wav
  • Cómo desarrollar aplicaciones de reconocimiento de voz como tom de conversación
  • Cambiar la voz de voz predeterminada en texto a voz por opción de pantalla dentro de la aplicación
  • Cómo manejar ERROR_RECOGNIZER_BUSY
  • ¿Cómo utilizo la búsqueda por voz y VoiceRecognition en Android?
  • ¿Cómo pasar el texto a Google Voice SMS mediante programación?
  • Cómo construir BufferReceived () para capturar la voz usando RecognizerIntent?
  • API de voz a texto de Google para idiomas distintos del inglés
  • SpeechRecognizer lanza onError en la primera escucha
  • Tono DTMF en RecognitionListener.onReadyForSpeech () confundido con el discurso
  • Comparar voz wav en android o etiqueta de voz (comandos de voz) API
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.