本指南详细介绍了 Car App Library 的不同功能,您可以使用这些功能来实现兴趣点 (POI) 应用的功能。
在清单中声明类别支持
您的应用需要在其 CarAppService
的 intent 过滤器中声明 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 应用可以访问 PlaceListMapTemplate
和 MapWithContentTemplate
。
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 助理
使用助理启用您的 POI 应用的语音功能,允许用户通过询问诸如“嘿 Google,在 ExampleApp 上查找附近的充电站”之类的问题来搜索兴趣点。有关详细说明,请参阅 适用于汽车的 App Actions。