构建兴趣点应用

本指南详细介绍了您可以使用 Car App 库的不同功能来实现兴趣点 (POI) 应用的功能。

在清单中声明类别支持

您的应用需要在其 CarAppService 的意图过滤器中声明 androidx.car.app.category.POI 汽车应用类别

以下示例显示如何声明应用类别

<application>
    ...
   <service
       ...
        android:name=".MyCarAppService"
        android:exported="true">
      <intent-filter>
        <action android:name="androidx.car.app.CarAppService" />
        <category android:name="androidx.car.app.category.POI"/>
      </intent-filter>
    </service>
    ...
<application>

访问地图模板

POI 应用可以访问 PlaceListMapTemplateMapWithContentTemplate

PlaceListMapTemplate 专为显示 POI 列表以及主机渲染的地图而设计。

MapWithContentTemplate 可用于显示列表和其他类型的与其应用渲染的地图一起显示的内容。有关使用此模板的更多详细信息,请参阅 绘制地图

要访问这些模板,您的应用需要在其 AndroidManifest.xml 文件中声明 androidx.car.app.MAP_TEMPLATES 权限

<manifest ...>
  ...
  <uses-permission android:name="androidx.car.app.MAP_TEMPLATES"/>
  ...
</manifest>

刷新 PlaceListMapTemplate 内容

使用PlaceListMapTemplate构建的地点列表浏览过程中,您可以让驾驶员一键刷新内容。实现OnContentRefreshListener接口的onContentRefreshRequested方法,并使用PlaceListMapTemplate.Builder.setOnContentRefreshListener在模板上设置监听器以启用列表刷新。

以下代码片段显示如何在模板上设置监听器

Kotlin

PlaceListMapTemplate.Builder()
    ...
    .setOnContentRefreshListener {
        // Execute any desired logic
        ...
        // Then call invalidate() so onGetTemplate() is called again
        invalidate()
    }
    .build()

Java

new PlaceListMapTemplate.Builder()
        ...
        .setOnContentRefreshListener(() -> {
            // Execute any desired logic
            ...
            // Then call invalidate() so onGetTemplate() is called again
            invalidate();
        })
        .build();

只有当监听器有值时,刷新按钮才会显示在PlaceListMapTemplate的标题中。

当用户点击刷新按钮时,将调用OnContentRefreshListener实现的onContentRefreshRequested方法。在onContentRefreshRequested中,调用Screen.invalidate方法。然后,主机回调用您的应用程序的Screen.onGetTemplate方法来检索包含已刷新内容的模板。有关刷新模板的更多信息,请参阅刷新模板内容。只要onGetTemplate返回的下一个模板类型相同,它就被计为刷新,并且不会计入模板配额。

使用App Actions集成Google Assistant

使用Assistant启用您的POI应用程序的语音功能,允许用户通过询问例如“嘿,Google,在ExampleApp上查找附近的充电站”之类的问题来搜索兴趣点。有关详细说明,请参阅汽车的App Actions