Создайте приложение с достопримечательностями

В этом руководстве подробно описаны различные функции библиотеки автомобильных приложений, которые вы можете использовать для реализации функциональности вашего приложения «Точки интереса» (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 можно использовать для отображения списков и других типов контента рядом с картой, отображаемой вашим приложением. Дополнительные сведения об использовании этого шаблона см. в разделе Рисование карт.

Чтобы получить доступ к этим шаблонам, вашему приложению необходимо объявить разрешение androidx.car.app.MAP_TEMPLATES в файле AndroidManifest.xml :

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

Обновить содержимое PlaceListMapTemplate.

Вы можете позволить водителям обновлять содержимое одним нажатием кнопки при просмотре списков мест, созданных с помощью PlaceListMapTemplate . Реализуйте метод onContentRefreshRequested интерфейса OnContentRefreshListener и используйте PlaceListMapTemplate.Builder.setOnContentRefreshListener , чтобы настроить прослушиватель в шаблоне для включения обновления списка.

В следующем фрагменте показано, как настроить прослушиватель в шаблоне:

Котлин

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

Ява

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

Кнопка обновления отображается в заголовке PlaceListMapTemplate только в том случае, если у прослушивателя есть значение.

Когда пользователь нажимает кнопку обновления, вызывается метод onContentRefreshRequested вашей реализации OnContentRefreshListener . В onContentRefreshRequested вызовите метод Screen.invalidate . Затем хост вызывает метод Screen.onGetTemplate вашего приложения, чтобы получить шаблон с обновленным содержимым. Дополнительные сведения об обновлении шаблонов см. в разделе Обновление содержимого шаблона . Пока следующий шаблон, возвращаемый onGetTemplate имеет тот же тип, он считается обновлением и не учитывается в квоте шаблона.

Интеграция с Google Assistant с помощью действий приложения.

Включите голосовое управление своим приложением POI с помощью Ассистента, чтобы пользователи могли искать достопримечательности, спрашивая что-то вроде: «Окей, Google, найди ближайшие зарядные станции в exampleApp» . Подробные инструкции см. в разделе «Действия приложения для автомобилей» .