概述
百度地图能力开放简介#
车联网开放平台是小度车载系统的能力开放平台,地图能力是小度车载系统的组成部分,因此,为了给开发者或者车厂提供一个全能力的开放平台,百度地图提供了全方位的能力开放方案。
功能介绍#
百度地图开放的能力,包括能接受来自车机系统或者第三方的信息输入,和往车机系统或者第三方进行信息输出。
信息输入,主要指百度地图可以接收主图功能、搜索功能、出行导航、用户信息、车身相关信息等五大类输入,并进行相应的处理。百度地图接收了主图功能类的输入,会在主图上显示相关信息,包括标注、POI等;百度地图接收了搜索功能和出行导航类的输入,会发起POI搜索,或者进入导航;百度地图接收用户信息,可以设置用户的家和公司等信息,以便在地图中可以快捷地发起回家和去公司的导航;百度地图接收了车身相关信息,比如油量,会有相应的动作,比如提醒用户沿途的加油站。
信息输出,主要指百度地图可以往系统或者第三方输出地图信息、导航信息、底图屏幕等,接收方接收之后可以做相应的处理。百度地图输出地图信息,包括当前行政区域等信息;百度地图在导航状态或者巡航状态会输出符合ADASISv3接口规范的ADASIS信息,包括当前路名、下一个机动点信息、道路转弯半径等信息;百度地图可以往系统仪表盘或者第三方,比如Launcher输出底图动画。
OpenAPI#
百度地图车机版第三方调用协议是为整车厂、前后装主机厂、系统方案商、第三方开发者提供的一种在系统或第三方应用中调用百度地图车机版App的方法,以满足特定业务场景下应用需求的程序接口。调用方只需要按照接口规范实现,便可在车机设备上调起百度地图车机版,进行地图展示、POI检索、路线规划、导航等功能,无需进行复杂的地图功能开发。
通讯方式#
通过系统广播调用的方式实现功能调用或信息透出
ACTION:
百度地图发送的广播ACTION: com.baidu.naviauto.action.send
百度地图接收的广播ACTION: com.baidu.naviauto.action.recv
用例说明
开发者在调用 URI 之前需要先判断是否安装了百度地图车机版。如果没有安装,下载安装百度地图车机版。然后调用相关地图功能,系统/第三方在使用接口协议时,车机设备中需要安装百度地图车机版,同时需要拼写符合协议规范的URI串,通过key值区分不同的协议接口,例如:设置家/公司的地址
Intent intent = new Intent();
intent.setAction("com.baidu.naviauto.action.recv");
intent.putExtra("CMD_TYPE", 10051);
intent.putExtra("BD_LAT", 114.067808);
intent.putExtra("BD_LON", 22.534975);
intent.putExtra("BD_POINAME", " 深圳会展中心-停车场 ");
intent.putExtra("BD_ADDRESS", "测试地址");
intent.putExtra("TYPE", 1);
intent.putExtra("ENCRYPTED",0);
sendBroadcast(intent);
特殊处理
针对第一次安装地图或者强制停止后,调用具体广播协议,无法唤起地图的问题。
根本原因:
Android 3.0后,对静态注册的广播做了限制。
解决方案 1:
intent 新增 flag 处理:
intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
解决方案2:
若方案 1 未能解决您的问题,部分 OS 仍然无法唤起。请采用下面示例,先主动唤起应用。
// 百度地图车机版包名
String pkgName = "com.baidu.naviauto";
Intent launchIntent = new Intent();
launchIntent.setComponent(new ComponentName(pkgName, "com.baidu.naviauto.NaviAutoActivity"));
startActivity(launchIntent);
适用环境#
智能车载设备(车机、智能后视镜等)或者车载应用APP。
适用场景#
零流量更新相关页面,默认不响应指令。
支持平台#
Android平台:采用标准广播协议。
常见错误码对照表#
1001 当前场景不支持
1002 传递的参数有误 中的表示错误的参数
1003 当前指令不支持
通过log打印的日志来追踪异常情况,过滤 TAG 为 NaviAutoController
第一种情况当前场景不支持,打印的log:
error code :1001
第二种情况传递参数错误,打印的log:
error code :1002 [BD_LAT/BD_LON]
, 参数名为 BD_LAT
或 BD_LON
有误
第三种情况当前指令不支持,打印的log:
Command code received: 1888
error code :1003
1888 这个指令不支持
错误排查
过滤 TAG 为 NaviAutoController
的日志,会有对应的日志。
本地 Android/data/com.baidu.naviauto/files/Logs/
下会生成对应的log文件,依照错误码具体参数排查原因。