Android自动导航应用,选择位置时显示交互界面

ogsagwnx  于 2023-03-16  发布在  Android
关注(0)|答案(1)|浏览(76)

背景

我正在尝试使用HERE SDK创建一个Android自动导航应用程序,我想创建一个界面,允许用户在选择位置时与其交互,比如停车场或目的地。
在Google Maps和Waze应用程序中,我注意到它们做同样的事情,下面是它们实现的一些图像(下一张图像):
Waze interfaceGoogle Maps interface
我的问题
我很好奇他们是怎么做到的,而且,我复制同样的东西可行吗?

我尝试了什么?

我搜索了Android汽车应用程序库及其design guidelines的文档,但找不到任何类似的东西。
我测试了这些模板:PlaceListNavigationTemplateRoutePreviewNavigationTemplate。但是它们不能用来实现我的目标。也许在这种情况下可以使用另一个模板。
谢谢你的帮助。

更新

按照建议,我尝试使用MapTemplatePane来实现这个目标,但是我遇到了两个问题。

首先

Rows不应在Pane中单击。
第二
从Car API级别6开始,我们可以向行添加Action

@ExperimentalCarApi
        @NonNull
        @RequiresCarApi(6)
        public Builder addAction(@NonNull Action action) {
            List<Action> mActionsCopy = new ArrayList<>(mActions);
            mActionsCopy.add(requireNonNull(action));
            ActionsConstraints.ACTIONS_CONSTRAINTS_ROW.validateOrThrow(mActionsCopy);
            mActions.add(action);
            return this;
        }

我尝试将操作添加到行中

public class LocationPreview extends Screen {

    int id;
    Pane.Builder pane;

    protected LocationPreview(@NonNull CarContext carContext, int id) {

        super(carContext);
        this.id = id;
    }

    @SuppressLint("UnsafeOptInUsageError")
    @NonNull
    @Override
    public Template onGetTemplate() {

        Header header = new Header.Builder()
                .setStartHeaderAction(Action.BACK)
                .setTitle("Header")
                .build();

        pane = new Pane.Builder();

        pane.addRow(
                new Row.Builder()
                        .setTitle("Description")
                        .addText("This is example of MapTemplate")
                        .build()
        );

        pane.addRow(
                new Row.Builder()
                        .setTitle("Contact")
                        .addAction(
                                new Action.Builder()
                                        .setTitle("+66 66 66 66 66")
                                        .setIcon(CarIcon.ALERT)
                                        .setOnClickListener(this::startChatBot)
                                        .build()
                        )
                        .build()
        );

        return new MapTemplate.Builder()
                .setHeader(header)
                .setPane(pane.build())
                .build();
    }
}

但是正如你在output中看到的,我们看不到操作按钮。

xmjla07d

xmjla07d1#

那么MapTemplate(设计指南的幻灯片62和63)呢?

相关问题