快速开始
功能介绍
本文给出 EHService 的最小可运行接入流程:
- 初始化 SDK
- 创建
EHDataService 或 EHMessageService
- 注册监听器并消费回调
- 退出时释放资源
详细能力请继续阅读 EH数据服务 与 EH消息服务。
1) 初始化 SDK
EHService 依赖 SDK 基础能力,必须先初始化:
| val sdkOptions = SDKOptions.builder()
.setSdkDataDir("/sdcard/YourMapDataPath")
.setRegion(Region.EU.name)
.build()
val navSDKOptions = NavSDKOptions.builder(sdkOptions)
.enableDownloadMapData(false)
.build()
SDK.getInstance().initialize(application, navSDKOptions)
|
2) 创建服务
2.1 创建 EHDataService(结构化数据)
| val ehDataService = EHService.Factory.createEHDataService(
EHServiceOption.Builder()
.setServiceMode(EHServiceMode.STANDALONE)
.setMainPathLength(5000)
.setIntersectionDetectDistance(2000)
.setSubPathLevel(0)
.build()
)
|
2.2 创建 EHMessageService(二进制消息)
| val ehMessageService = EHService.Factory.createEHMessageService(
EHServiceOption.Builder()
.setServiceMode(EHServiceMode.STANDALONE)
.setMainPathLength(5000)
.setPositionMessagePeriod(1000) // ms
.build()
)
|
3) 注册监听器
3.1 EHDataService
| val dataListener = object : EHDataListener {
override fun onPathUpdated(path: EHPath) {
// 处理 MPP / sub path 等结构化路径信息
}
override fun onPositionUpdated(positions: List<EHPosition>) {
// 处理当前位置候选(按置信度降序)
}
}
ehDataService.addEHDataListener(dataListener)
|
3.2 EHMessageService
| val messageListener = EHMessageListener { messages ->
// messages[i].data 是 64-bit 原始 EH message
}
val locationListener = EHLocationListener { feedback ->
// DR 校准反馈(坐标、航向、置信度等)
}
ehMessageService.addEHMessageListener(messageListener)
ehMessageService.addEHLocationListener(locationListener)
|
4) 释放资源
建议先移除监听器,再 dispose():
| ehDataService.removeEHDataListener(dataListener)
ehDataService.dispose()
ehMessageService.removeEHMessageListener(messageListener)
ehMessageService.removeEHLocationListener(locationListener)
ehMessageService.dispose()
|
应用整体退出时再调用:
| SDK.getInstance().dispose()
|
注意事项
- 同一个 listener 不应重复添加(内部按集合去重管理)。
- 服务实例
dispose() 后不可复用,需要重新创建。
- 回调线程由 SDK 内部分发,涉及 UI 更新请切主线程。