Как создать приложение для объектов инфраструктуры

В этом руководстве рассказывается о различных функциях библиотеки приложений для автомобилей, которые можно использовать для реализации функций приложения, связанных с объектами инфраструктуры.

Как объявить поддержку категорий в манифесте

В фильтре интентов элемента 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 и MapWithContentTemplate.

Элемент PlaceListMapTemplate предназначен для показа списка объектов вместе с картой, которая отрисовывается хостом.

Шаблон 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, чтобы добавить прослушиватель в шаблон и включить обновление списка.

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

return 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, относится к тому же типу, он считается обновлением и не учитывается в квоте шаблонов.

Как интегрировать приложение с Gemini или Google Ассистентом с помощью действий в приложениях

Добавьте в приложение для поиска достопримечательностей поддержку голосовых команд с помощью Gemini или Google Ассистента, чтобы пользователи могли искать интересные места, например, с помощью запроса Окей, Google, найди ближайшие зарядные станции в приложении"Пример". Подробные инструкции приведены в статье Действия в приложениях для автомобилей.