Skip to content

自定义定位输入

功能介绍

EHService 默认使用 SDK 定位能力。
若你需要接入车机 CAN、融合定位、回放轨迹等外部定位源,可通过 SDK.getInstance().injectLocationProvider(...) 注入自定义 LocationProvider

典型流程

1
2
3
4
5
6
7
8
9
实现自定义 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
    }
}

注入并更新:

1
2
3
4
val provider = DemoLocationProvider()
SDK.getInstance().injectLocationProvider(provider)

provider.setLocation(location) // 持续喂入外部定位

输入建议

  • Location 至少保证:latitudelongitudebearingspeed 可用。
  • 高频输入建议 5~10Hz;过低频可能导致 EH 输出稳定性下降。
  • 弱 GPS / 隧道场景可结合 enableSelfPropellingUponWeakGPS(true) 评估效果。

注意事项

  • 调用 injectLocationProvider 后,SDK 将使用注入源作为定位输入。
  • 退出场景建议显式解绑:SDK.getInstance().injectLocationProvider(null)
  • 在应用销毁前,按顺序释放 EH 服务与 SDK 资源(见 快速开始)。