App „Internet der Dinge“ erstellen

Mit IoT-Apps können Nutzer auf verbundenen Geräten im Auto relevante Aktionen ausführen. Beispiele hierfür sind das Steuern des Zustands bestimmter Geräte, z. B. das Öffnen eines Garagentors, das Klappen der Lichtschalter oder das Aktivieren der Sicherheit zu Hause.

Unterstützung für Kategorien im Manifest deklarieren

Deine App muss im Intent-Filter ihrer CarAppService die Kategorie androidx.car.app.category.IOT für Auto-Apps deklarieren.

<application>
    ...
   <service
       ...
        android:name=".MyCarAppService"
        android:exported="true">
      <intent-filter>
        <action android:name="androidx.car.app.CarAppService" />
        <category android:name="androidx.car.app.category.IOT"/>
      </intent-filter>
    </service>
    ...
<application>

App-Funktionen implementieren

Informationen zur Implementierung deiner App findest du unter Android for Cars App-Bibliothek verwenden. Dort wird beschrieben, wie Apps für die Auto-App-Bibliothek erstellt werden. Du solltest dich auch mit den Qualitätsrichtlinien für Auto-Apps für IoT-Apps vertraut machen, da deine App anhand dieser Richtlinien überprüft wird.

Für IoT-Anwendungen ist das GridTemplate eine gute Wahl, um eine Liste von Geräten anzuzeigen und dem Nutzer zu ermöglichen, mit ihnen zu interagieren, wie im folgenden Beispiel gezeigt:

Kotlin

val listBuilder = ItemList.Builder()

listBuilder.addItem(
    GridItem.Builder()
        .setTitle("Garage door")
        .setImage(...)
        // Handle user interactions
        .setOnClickListener {...}
        .build()
)

listBuilder.addItem(
    GridItem.Builder()
        .setTitle("Garage lights")
        // Show a loading indicator until the status of the device is known
        // (call invalidate() when the status is known to refresh the screen)
        .setLoading(true)
        .build()
)

return GridTemplate.Builder()
    .setTitle("Devices")
    .setHeaderAction(Action.APP_ICON)
    .setSingleList(listBuilder.build())
    .build()

Java

ItemList.Builder listBuilder = new ItemList.Builder();

listBuilder.addItem(
    new GridItem.Builder()
        .setTitle("Garage door")
        .setImage(...)
        // Handle user interactions
        .setOnClickListener(() -> {...})
        .build()
);

listBuilder.addItem(
    new GridItem.Builder()
        .setTitle("Garage lights")
        // Show a loading indicator until the status of the device is known
        // (call invalidate() when the status is known to refresh the screen)
        .setLoading(true)
        .build()
);

return new GridTemplate.Builder()
    .setTitle("Devices")
    .setHeaderAction(Action.APP_ICON)
    .setSingleList(listBuilder.build())
    .build();