このガイドでは、スポット(POI)アプリの機能を実装する際に使用できる、自動車向けアプリ ライブラリのさまざまな機能について詳しく説明します。
マニフェストでカテゴリのサポートを宣言する
アプリでは、androidx.car.app.category.POI
自動車アプリのカテゴリを、
インテント
フィルタで
CarAppService宣言する必要があります。
次の例は、アプリのカテゴリを宣言する方法を示しています。
<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 を使用してテンプレートのリスナーを設定することで、リストの更新が有効になります。
次のスニペットは、テンプレートにリスナーを設定する方法を示しています。
return 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 をご覧ください。