自定义定位输入
功能介绍
EHService 默认使用 SDK 定位能力。
若你需要接入车机 CAN、融合定位、回放轨迹等外部定位源,可通过 SDK.getInstance().injectLocationProvider(...) 注入自定义 LocationProvider。
典型流程
| 实现自定义 LocationProvider
↓
初始化 SDK
↓
SDK.injectLocationProvider(provider)
↓
持续 updateLocation(...)
↓
EHDataService / EHMessageService 消费输出
|
自定义 Provider 示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | class DemoLocationProvider : LocationProvider("Demo") {
private var running = false
private var latest: Location? = null
override fun onStart() {
running = true
CoroutineScope(Dispatchers.IO).launch {
while (running) {
latest?.let { updateLocation(it, null) }
delay(100) // 10Hz
}
}
}
override fun onStop() {
running = false
}
fun setLocation(location: Location) {
latest = location
}
}
|
注入并更新:
| val provider = DemoLocationProvider()
SDK.getInstance().injectLocationProvider(provider)
provider.setLocation(location) // 持续喂入外部定位
|
输入建议
Location 至少保证:latitude、longitude、bearing、speed 可用。
- 高频输入建议 5~10Hz;过低频可能导致 EH 输出稳定性下降。
- 弱 GPS / 隧道场景可结合
enableSelfPropellingUponWeakGPS(true) 评估效果。
注意事项
- 调用
injectLocationProvider 后,SDK 将使用注入源作为定位输入。
- 退出场景建议显式解绑:
SDK.getInstance().injectLocationProvider(null)。
- 在应用销毁前,按顺序释放 EH 服务与 SDK 资源(见 快速开始)。