Tworzenie aplikacji do poznania ciekawych miejsc

W tym przewodniku szczegółowo opisujemy różne funkcje biblioteki aplikacji samochodowych, za pomocą których możesz wdrożyć funkcje wybranych miejsc (POI).

Zadeklaruj obsługę kategorii w pliku manifestu

Aplikacja musi zadeklarować androidx.car.app.category.POI kategorię aplikacji samochodowych w filtrze intencji CarAppService.

Ten przykład pokazuje, jak zadeklarować kategorię aplikacji:

<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>

Dostęp do szablonów map

Aplikacje ważnych miejsc mają dostęp do tych obiektów: PlaceListMapTemplate i MapWithContentTemplate.

Interfejs PlaceListMapTemplate służy do wyświetlania listy ważnych miejsc na mapie renderowanej przez hosta.

Za pomocą MapWithContentTemplate można wyświetlać listy i inne rodzaje treści obok mapy renderowanej przez Twoją aplikację. Więcej informacji o korzystaniu z tego szablonu znajdziesz w artykule Rysowanie map.

Aby uzyskać dostęp do tych szablonów, aplikacja musi zadeklarować uprawnienie androidx.car.app.MAP_TEMPLATES w pliku AndroidManifest.xml:

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

Odświeżenie zawartości szablonu PlaceListMapTemplate

Możesz umożliwić kierowcom odświeżanie treści jednym kliknięciem podczas przeglądania list miejsc utworzonych przy użyciu PlaceListMapTemplate. Zaimplementuj metodę onContentRefreshRequested interfejsu OnContentRefreshListener i użyj PlaceListMapTemplate.Builder.setOnContentRefreshListener, aby ustawić detektor w szablonie i umożliwić odświeżanie listy.

Ten fragment kodu pokazuje, jak ustawić detektor w szablonie:

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();

Przycisk odświeżania jest widoczny w nagłówku obiektu PlaceListMapTemplate tylko wtedy, gdy detektor ma jakąś wartość.

Gdy użytkownik kliknie przycisk odświeżania, wywoływana jest metoda onContentRefreshRequested implementacji OnContentRefreshListener. W obiekcie onContentRefreshRequested wywołaj metodę Screen.invalidate. Następnie host ponownie wywołuje metodę Screen.onGetTemplate aplikacji, aby pobrać szablon z odświeżoną treścią. Więcej informacji o odświeżaniu szablonów znajdziesz w sekcji Odświeżanie zawartości szablonu. Jeśli następny szablon zwrócony przez funkcję onGetTemplate jest tego samego typu, jest liczony jako odświeżenie i nie wliczają się do limitu szablonu.

Integracja z Asystentem Google za pomocą akcji w aplikacji

Włączaj głosowo aplikację ważnych miejsc, używając Asystenta, by umożliwić użytkownikom wyszukiwanie ciekawych miejsc. Powiedz na przykład „OK Google, znajdź stacje ładowania w przykładowej aplikacji”. Szczegółowe instrukcje znajdziesz w artykule Działania w aplikacji w samochodach.