html调用百度地图语音播报,实现百度地图导航Demo的语音播报功能

上文中实现了在本地导入百度地图导航Demo,那么在此基础上如何实现导航的语音播报呢?

一、为该应用申请语音播报(也叫注册)

http://developer.baidu.com/map/index.php?title=android-navsdk/guide/voice

SDK内置百度TTS语音播报功能,需要对应用进行授权验证才能够使用,因此需要主动注册应用相关信息。

第一步:如果不是LBS开放平台的注册开发者,首先需要登录LBS开放平台进行应用注册,在工程配置的AndroidManifest中有描述。已经完成注册的开发者请直接进入下一步。【上篇文章中已经完成】

第二步:然后需要在导航TTS平台中进行注册申请。 注意此处的应用签名为MD5,AK为在LBS开发平台申请到的AK。MD5签名仅包含字母,不包含分号,获取方法如下:【此方法适用于签名后的apk,如果只是调试用,则直接使用eclipse——Preferences——Android——Build中的MD5签名信息】

PS:为了避免注册时弄错签名,建议直接用打包出来的apk查看签名,具体如下:

1) 将apk修改后缀为 .rar文件后解压;

2) 进入解压后的META-INF目录,该目录下会存在文件CERT.RSA

3) 在该目录下打开cmd,输入命令 :keytool -printcert -file CERT.RSA

这里将会显示出MD5和SHA1签名。

注意:

1、此处的MD5签名应该和在LBS开放平台注册的应用使用的SHA1是一对。【暂未验证过签名后的apk是否可以正常运行,如果不可以正常运行的话,就需要根据签名后的SHA1注册一个新的应用(LBS和TTS平台)】

【1.1、第一步的时候,在LBS开放平台上注册应用的时候,如果使用的是Eclipse——Preferences——Android——Build中的SHA1信息,那么代表这个应用的调试版本;如果是通过上面命令行的方式查找到的apk中的SHA1信息,则代表这个应用的签名版本。(使用的SHA1不同,则生成的AK不同!)

1.2、第二步的时候,在导航TTS平台上注册应用的时候,需要输入MD5和AK信息,而AK信息是和SHA1关联的,所以就需要保证MD5和SHA1关联。所以就需要注意MD5的获取了。

1.3、上一篇中我使用的eclipse中查看的SHA1签名,所以此处我使用的也是eclipse种的MD5信息。

2、注册TTS白名单应用是输入的MD5是去除掉冒号(:)的内容。

c961a239d7e24b258b983646ddf7ad20.png

defbe0e23bef13cb28bc0d8c438df9b2.png

8f8f65ba1eb03ceeed9c706d559c10c5.png

二、在本地的百度地图导航Demo中修改为模拟导航

修改BaiduNaviManager.getInstance().launchNavigator中的true为false。

/*发起算路操作并在算路成功后通过回调监听器进入导航过程.

*参数:

*activity - 建议是应用的主Activity

*nodes - 传入的算路节点,顺序是起点、途经点、终点,其中途经点最多三个,参考 BNRoutePlanNode

*preference - 算路偏好,参考RoutePlanPreference定义 [推荐:1,高速优先(用时最少):2,少走高速(路径最短):4,少收费:8,躲避拥堵:16]

*isGPSNav - true表示真实GPS导航,false表示模拟导航

*listener - 开始导航回调监听器,在该监听器里一般是进入导航过程页面

**/BaiduNaviManager.getInstance().launchNavigator(this, list, 1, false, new DemoRoutePlanListener(sNode));

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以提供一个简单的demo示例,来演示如何使用ant-design-vue实现语音搜索框,并结合Java后端调用百度语音识别API实现语音转文字的功能前端代码示例: ```vue <template> <div> <a-input-search v-model="searchValue" :enter-button="true" @search="handleSearch"> <a-icon slot="suffix" v-if="!listening" type="search" @click="startListening" /> <a-icon slot="suffix" v-else type="loading" /> </a-input-search> </div> </template> <script> import { debounce } from 'lodash' import { message } from 'ant-design-vue' export default { data() { return { searchValue: '', listening: false } }, methods: { handleSearch() { // 处理搜索请求 console.log('搜索关键字:', this.searchValue) }, startListening() { // 开始语音识别 message.info('请开始说话') this.listening = true this.recognizeSpeech() }, stopListening() { // 结束语音识别 message.info('识别结束') this.listening = false }, recognizeSpeech: debounce(function() { // 调用百度语音识别API const token = '百度语音识别API的Token' const url = `https://vop.baidu.com/pro_api?dev_pid=1536&cuid=xxxx&token=${token}` const blob = new Blob([], { type: 'audio/wav' }) const formData = new FormData() formData.append('audio', blob) formData.append('len', '0') formData.append('speech', '') const headers = { 'Content-Type': 'application/json; charset=UTF-8' } this.$http.post(url, formData, { headers }).then(res => { // 获取语音识别结果 console.log('语音识别结果:', res.data) this.stopListening() this.searchValue = res.data.result[0] this.handleSearch() }).catch(error => { console.error(error) message.error('语音识别失败,请重试') this.stopListening() }) }, 1000) } } </script> ``` 后端代码示例: ```java public class BaiduSpeechRecognition { private static final String URL = "https://vop.baidu.com/pro_api"; private static final String TOKEN = "百度语音识别API的Token"; private static final String CUID = "xxxx"; // 用户自定义ID public static String recognizeSpeech(InputStream inputStream) throws IOException, URISyntaxException { byte[] bytes = IOUtils.toByteArray(inputStream); String base64Data = Base64.getEncoder().encodeToString(bytes); HttpClient httpClient = HttpClientBuilder.create().build(); URIBuilder uriBuilder = new URIBuilder(URL); uriBuilder.addParameter("dev_pid", "1536"); uriBuilder.addParameter("cuid", CUID); uriBuilder.addParameter("token", TOKEN); HttpPost httpPost = new HttpPost(uriBuilder.build()); httpPost.setHeader("Content-Type", "application/json; charset=UTF-8"); JSONObject json = new JSONObject(); json.put("speech", base64Data); json.put("len", bytes.length); httpPost.setEntity(new StringEntity(json.toJSONString(), Charset.forName("UTF-8"))); HttpResponse response = httpClient.execute(httpPost); String result = EntityUtils.toString(response.getEntity()); JSONObject jsonObject = JSONObject.parseObject(result); JSONArray jsonArray = jsonObject.getJSONArray("result"); return jsonArray.getString(0); } } ``` 需要注意的是,以上示例代码仅供参考,并不完整,实际开发中还需要考虑异常处理、接口调用频率限制等问题。同时,还需要在百度语音识别API官网上申请API Key和Secret Key,并使用正确的Token进行接口调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值