上文中实现了在本地导入百度地图导航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是去除掉冒号(:)的内容。
二、在本地的百度地图导航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));