实现RoutePreviewNavigationTemplate

问题描述 投票:0回答:1

嗨,我正在尝试使用虚拟坐标实现路线预览,但我收到此错误

致命异常:主要 进程:com.pkg.ir,PID:23089 java.lang.RuntimeException:java.lang.IllegalArgumentException:所有行的标题或文本都必须附加距离或持续时间跨度

这是我的代码

我正在使用这个库:实现“androidx.car.app:app:1.4.0-rc02”

class RoutePreviewScreen(carContext: CarContext) : Screen(carContext) {

@SuppressLint("UnsafeOptInUsageError")
override fun onGetTemplate(): Template {
    val builder = RoutePreviewNavigationTemplate.Builder()
        .setTitle("Route Details")
        .setHeaderAction(Action.APP_ICON)

    val currentLocation = CarLocation.create(19.269160, -103.754996)

    val locationA = CarLocation.create(19.2689369, -103.7636865)
    val markerA = PlaceMarker.Builder().setColor(CarColor.RED).build()
    val placeA = Place.Builder(locationA).setMarker(markerA).build()

    val distancia = 5
    val duracion = 20

    val distanceSpan = DistanceSpan.create(Distance.create(distancia.toDouble(), Distance.UNIT_KILOMETERS))
    val durationSpan = DurationSpan.create(duracion.toLong())

    val routeItem = Row.Builder()
        .setTitle(CarText.create("From current to A"))
        .addText(CarText.create("Distance: $distanceSpan"))
        .addText(CarText.create("Duration: $durationSpan"))
        .setMetadata(
            Metadata.Builder()
                .setPlace(placeA)
                .build()
        )
        .build()
    val itemList = ItemList.Builder()
        .addItem(routeItem)
        .build()

    builder.setItemList(itemList)

    val navigateAction = Action.Builder()
        .setTitle("Iniciar Navegación")
        .setOnClickListener {
         //TODO IMPLEMENT NAVIGATION
        }
        .build()

    builder.setNavigateAction(navigateAction)

    return builder.build()
}

}

android-auto
1个回答
1
投票

Learn Car 应用程序库基础代码实验室的第 10 步展示了如何执行此操作的示例!

您现在所做的问题是

"Distance: $distanceSpan"
实际上并没有应用跨度,它只是使用 Kotlin 字符串插值,产生常规字符串,而不是跨度字符串。

使用 Spans 的 Spantastic 文本样式 提供了有关使用 Spans 的更多详细信息,这也适用于 汽车特定的 spans,如此处提到的

DistanceSpan
DurationSpan
,以及其他类似
CarIconSpan

© www.soinside.com 2019 - 2024. All rights reserved.