gpt4 book ai didi

带有 GPS 语音导航的 Android 应用

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:06 25 4
gpt4 key购买 nike

我正在尝试为 Android 创建旅游应用。

我需要通过语音引导用户。我一直在查看 googlemaps Android API,但没有关于语音导航的内容。

你知道解决这个问题的方法吗?我可以使用任何其他 API/SDK 来实现它吗?

提前致谢。

最佳答案

这是一个非常酷的想法。但是,我不知道您是否准备好重新发明轮子来做到这一点。如果你是,我也有一个解决方案,但让我先介绍一下我将如何解决这个问题:

在 Android 上,有一个 Intent 系统,它允许您调用内部应用程序以使您的工作更轻松。那么为什么不启动 Directions 应用程序(具有特殊用途的 Google map ),因为用户可能熟悉 UI 并且可能喜欢它?此外,使用此解决方案,您无需关心保持内容更新,您只需询问系统,它就会提供开箱即用的解决方案。而且以这种方式进行要容易得多。 :)

为此,您将使用系统可以识别的普通基本 URI:

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

在那之后,用户将能够选择他想去那里的方式,你的工作就完成了,用户很满意,你也喜欢其他 99% 的应用程序(他也有语音信息)。

然后,如果您的要求是将它放在您的应用程序中,那是可能的(基于 Aster 提议),但您需要自己跟踪用户(以便能够发送良好的指令在正确的时间)。但首先让我们看一下 Google 的 Directions API,如果您正确设置了您的应用程序,您应该会收到这种 JSON(整个文档 there):

{
"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
}
}
} ]
}

所以有可能采用这些 html_instructions 并使用 Android TTS Lib 将它们读给用户当他在 start_locationend_location 周围的正方形中时。然而,正确管理这个方 block 可能会非常复杂,这就是为什么我会使用第一个真正尊重 Android 精神的选项。

顺便说一句,这里是这些属性的定义:

start_location contains the latitude/longitude coordinates of the origin of this leg. Because the Directions API calculates directions between locations by using the nearest transportation option (usually a road) at the start and end points, start_location may be different than the provided origin of this leg if, for example, a road is not near the origin.

end_location contains the latitude/longitude coordinates of the given destination of this leg. Because the Directions API calculates directions between locations by using the nearest transportation option (usually a road) at the start and end points, end_location may be different than the provided destination of this leg if, for example, a road is not near the destination.

关于带有 GPS 语音导航的 Android 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30321910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com