ここでは、スポット(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>
地図のテンプレートにアクセスする
アプリは、ホストによってレンダリングされる PlaceListMapTemplate
にアクセスできます。これは、地図とともにスポットのリストを表示するように設計されたテンプレートです。
このテンプレートにアクセスするには、アプリの AndroidManifest.xml
で次のように androidx.car.app.MAP_TEMPLATES
権限を宣言する必要があります。
<uses-permission android:name="androidx.car.app.MAP_TEMPLATES"/>
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 アプリを音声で有効にし、「OK Google, ExampleApp で近くの充電スタンドを探して」などと話しかけて、スポットを簡単に検索できるようにします。詳細な手順については、自動車向け App Actions をご覧ください。