zep*_*dro 8 gps android voice google-maps-android-api-2
我正在尝试为Android创建一个旅游应用程序.
我需要用户以语音为导向.我一直在看,googlemaps Android API但声音方向没什么.
你知道任何解决方法吗?我可以使用其他API/SDK来实现这个吗?
提前致谢.
这是一个非常酷的主意。然而,我不知道你是否准备好重新发明轮子来做到这一点。如果你是的话,我也有一个解决方案,但让我先介绍一下我解决这个问题的方法:
\n在 Android 上,有一个意图系统,它允许您调用内部应用程序,以使您的工作更轻松。既然用户可能熟悉 UI 并且可能喜欢它,那么为什么不启动“路线”应用程序(具有特殊意图的 Google 地图)呢?此外,使用此解决方案,您无需关心保持内容更新,您只需询问系统,它就会提供开箱即用的解决方案。而且以这种方式进行要容易得多。:)
\n为此,您将使用系统可以识别的简单基本 URI:
\nString address = "My Fake Address";\nIntent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?daddr=" + address));\nstartActivity(intent);\nRun Code Online (Sandbox Code Playgroud)\n之后,用户将能够选择他想要如何去那里,你的工作完成了,用户感到满意,并且你确实喜欢 99% 的其他应用程序(他也有语音消息)。
\n然后,如果您要求将其放入您的应用程序中,则可能是可能的(基于 Aster 命题),但您需要自己跟踪用户(以便能够在合适的时间)。但首先让我们看一下 Google 的 Directions API,如果你正确设置你的应用程序,你应该会收到这种 JSON(整个文档在那里)有完整的文档):
\n{\n "status": "OK",\n "routes": [ {\n "summary": "I-40 W",\n "legs": [ {\n "steps": [ {\n "travel_mode": "DRIVING",\n "start_location": {\n "lat": 41.8507300,\n "lng": -87.6512600\n },\n "end_location": {\n "lat": 41.8525800,\n "lng": -87.6514100\n },\n "polyline": {\n "points": "a~l~Fjk~uOwHJy@P"\n },\n "duration": {\n "value": 19,\n "text": "1 min"\n },\n "html_instructions": "Head \\u003cb\\u003enorth\\u003c/b\\u003e on \\u003cb\\u003eS Morgan St\\u003c/b\\u003e toward \\u003cb\\u003eW Cermak Rd\\u003c/b\\u003e",\n "distance": {\n "value": 207,\n "text": "0.1 mi"\n }\n },\n ...\n ... additional steps of this leg\n ...\n ... additional legs of this route\n "duration": {\n "value": 74384,\n "text": "20 hours 40 mins"\n },\n "distance": {\n "value": 2137146,\n "text": "1,328 mi"\n },\n "start_location": {\n "lat": 35.4675602,\n "lng": -97.5164276\n },\n "end_location": {\n "lat": 34.0522342,\n "lng": -118.2436849\n },\n "start_address": "Oklahoma City, OK, USA",\n "end_address": "Los Angeles, CA, USA"\n } ],\n "copyrights": "Map data \xc2\xa92010 Google, Sanborn",\n "overview_polyline": {\n "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"\n },\n "warnings": [ ],\n "waypoint_order": [ 0, 1 ],\n "bounds": {\n "southwest": {\n "lat": 34.0523600,\n "lng": -118.2435600\n },\n "northeast": {\n "lat": 41.8781100,\n "lng": -87.6297900\n }\n }\n } ]\n}\nRun Code Online (Sandbox Code Playgroud)\n因此,当用户位于或周围的正方形中时,可以使用Android TTS Libhtml_instructions将这些内容读取给用户。start_locationend_location。然而,正确管理这个方块可能非常复杂,这就是为什么我会使用第一个选项,它真正尊重 Android 精神。
顺便说一句,以下是这些属性的定义:
\n\n\n起始位置包含该航段原点的纬度/经度坐标。由于 Directions API 通过在起点和终点处使用最近的交通选项(通常是道路)来计算位置之间的方向,因此,如果道路不在原点附近,则 start_location 可能与提供的该路段的原点不同。
\n结束位置包含该航段给定目的地的纬度/经度坐标。由于 Directions API 通过在起点和终点处使用最近的交通选项(通常是道路)来计算位置之间的方向,因此,如果(例如,道路不在目的地附近),end_location 可能与该段提供的目的地不同。
\n