Vehicle integration basics
Request access介绍
本文档说明了集成商如何使用 Vehicle Integration Library (VIL) 将 Automotive Navigation Application (ANA) 与车辆集成。内容涵盖库的设置、使用以及集成测试。
项目设置
- 如果尚未安装,请安装 Android Studio 。
- 要设置 VIL,首先需要一个现有的 Android 项目。
- 如果没有,请参照 此指南创建新的 Android 项目 。
- 确保最低 SDK API 级别设置为 27(Android 8.1 “Oreo”) 或更高。
- 确保使用的最低 kotlin 版本为 1.9.25 或更高。
配置项目依赖
步骤 1. 将 Artifactory 仓库 URL 添加到 repositories 块(settings.gradle.kts):
dependencyResolutionManagement { repositories { google() mavenCentral() maven { url = uri("https://repositories.tomtom.com/artifactory/automotive-maven-release") credentials { username = "your-username" // 替换为您的 Artifactory 用户名 password = "your-password" // 替换为您的 Artifactory 密码 } } }}步骤 2. 更新您的应用级 Gradle 文件(例如 app/build.gradle.kts),将 maven 包作为依赖项添加:
dependencies { implementation("com.tomtom.automotive:vehicle-integration-library:0.6.0") ...}使用 VIL
实例化 Vehicle Integration API 客户端
通常在应用初始化时实例化 VIL,此时 Android Context 可用,例如在主应用类的 onCreate 方法中:
步骤 1. 如果您还没有应用类,请创建一个(例如 MyVilApplication),在项目中新建文件 MyVilApplication.kt,并按如下方式初始化 VIL:
import com.tomtom.automotive.integration.vehicle.client.api.VehicleIntegrationApiClientimport com.tomtom.automotive.integration.vehicle.client.api.error.NavAppErrorimport com.tomtom.automotive.integration.vehicle.client.api.status.NavAppConnectionStatusimport com.tomtom.automotive.integration.vehicle.client.api.status.NavAppConnectionStatusTypeimport com.tomtom.automotive.integration.vehicle.client.api.status.StatusCallbackimport com.tomtom.automotive.integration.vehicle.client.lib.VehicleIntegrationApiClientFactory
...
class MyVilApplication : Application() { lateinit var vilClient: VehicleIntegrationApiClient
override fun onCreate() { super.onCreate()
vilClient = VehicleIntegrationApiClientFactory.create( context = this, statusCallback = object : StatusCallback { override fun onConnectionStatus(connectionStatus: NavAppConnectionStatus) { if (connectionStatus.connectionStatusType == NavAppConnectionStatusType.CONNECTED) { // 设置参数 } }
override fun onError(error: NavAppError) { // 处理错误 } } ) }}步骤 2. 在 AndroidManifest.xml 中声明您的应用类:
<application android:name=".MyVilApplication" ... <!-- 其他设置 --></application>一旦创建了 VehicleIntegrationApiClient(通过 VehicleIntegrationApiClientFactory)并收到“已连接”回调,即可开始调用 API 函数。VIL API 参考请见 VIL API Reference 。
设置参数
例如,您可以通过 VehicleIntegrationApiClient 实例的 getVehicleInfoManager() 函数设置 Vehicle Specifications 参数:
import com.tomtom.automotive.integration.vehicle.client.api.VehicleIntegrationApiClientimport com.tomtom.automotive.integration.vehicle.client.api.vehicleinfo.vehiclespecs.VehicleSpecsCallbackimport com.tomtom.automotive.integration.vehicle.client.api.vehicleinfo.vehiclespecs.VehicleSpecsFailureimport com.tomtom.automotive.integration.vehicle.client.api.vehicleinfo.vehiclespecs.VehicleSpecsParametersimport com.tomtom.automotive.integration.vehicle.client.api.vehicleinfo.vehiclespecs.VehicleTypeimport com.tomtom.automotive.integration.vehicle.client.lib.VehicleIntegrationApiClientFactoryimport com.tomtom.automotive.integration.vehicle.common.Callbackimport com.tomtom.automotive.integration.vehicle.common.Result
...
vilClient.getVehicleInfoManager().setVehicleSpecs( VehicleSpecsParameters(VehicleType.CAR), object : VehicleSpecsCallback { override fun onResult(result: Result<VehicleSpecsParameters, VehicleSpecsFailure>) { if (result is Result.Failure) { if (result.reason == VehicleSpecsFailure.FAILED_TO_SET_VEHICLE_SPECS) { // 服务器端设置车辆规格失败 } else { // 意外的失败原因 } } else { // 车辆规格设置成功 } }
override fun onFunctionalityUnavailable(reason: Callback.Reason) { // 处理功能不可用 if (reason is Callback.Reason.IncompatibilityError) { // VIL 客户端与运行中的导航应用版本不兼容 } } })必需参数
本节列出了您的应用应设置的必需参数,以成功启动 ANA。如果未设置所有必需参数,ANA 中的启动画面将保持可见。
要设置这些参数,请使用 VehicleIntegrationApiClient 中提供的相应 API 函数,详见 VIL API Reference 指南:
VehicleSpecsParameters。表示通用车辆规格,例如车辆类型。ANA 需要此数据以定制其行为,且预期在应用运行时不会更改。更多信息请参见 VIL API Reference 。OnlineServicesConfigurationParameters。表示在线服务的配置信息。更多信息请参见 VIL API Reference 。指定一个完全限定域名 (FQDN),格式为 subdomain.domain.tld。FQDN 是 ANA 理解如何连接 TomTom 在线服务所必需的。有关如何获取 FQDN,请参阅 Set up online services。OnlineServicesTokenParameters。包含在线服务的身份验证令牌,格式为 JSON Web Token (JWT)。JWT 令牌用于认证和授权访问 TomTom 在线服务。该令牌是动态的,会根据令牌的过期时间在应用生命周期内变化。更多信息请参见 VIL API Reference 。有关如何设置 JWT 令牌,请参阅 Set up online services。ResourcesParameters。表示 ANA 可访问的平台资源,例如包含车载地图文件、密钥库、许可证和缓存的文件夹路径。ANA 需要此参数以了解车载地图相关文件的位置以及可存储相关缓存的位置。更多信息请参见 VIL API Reference 。
错误处理
您的应用可能会收到以下错误情况,必须进行适当处理。
| 错误 | 描述 | 提示 |
|---|---|---|
ErrorCallback.NavAppError.SECURITY_ERROR | VehicleIntegrationClient 权限不足,无法建立连接。 | 确保您的应用具有使用套接字通信的正确 Android 权限。 |
ErrorCallback.NavAppError.BIND_SERVICE_TIMEOUT | VehicleIntegrationClient 无法与导航应用建立连接。 | 确保导航应用已安装并正在运行。 |
ErrorCallback.NavAppError.EXCEPTION_WHEN_INVOKE_REQUEST | VehicleIntegrationClient 无法完成请求。 | 这表示导航应用存在问题;请联系支持人员协助。 |
ErrorCallback.NavAppError.VERSION_MISMATCH | VehicleIntegrationClient 库版本与您的应用不兼容。 | 确保为导航应用版本配置了正确的库版本。检查日志中的 isVersionMismatch。 |
ErrorCallback.NavAppError.NO_CONNECTION | VehicleIntegrationClient 不再连接到导航应用。 | 确保导航应用仍在运行。 |
Result.Failure.UNHANDLED | VehicleIntegrationClient 库版本与您的应用不兼容。 | 确保为导航应用版本配置了正确的库版本。 |
Callback.Reason.IncompatibilityError | VehicleIntegrationClient 库版本与您的应用不兼容。 | 确保为导航应用版本配置了正确的库版本。 |