Compiler une application IoT

Les applications IoT permettent aux utilisateurs d'effectuer des actions pertinentes sur des appareils connectés depuis leur voiture. Vous pouvez, par exemple, contrôler l'état de certains appareils, comme ouvrir une porte de garage, actionner des interrupteurs ou activer la sécurité de la maison.

Déclarer la catégorie compatible dans votre fichier manifeste

Votre application doit déclarer la catégorie d'applications automobiles androidx.car.app.category.IOT dans le filtre d'intent de son 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.IOT"/>
      </intent-filter>
    </service>
    ...
<application>

Implémenter les fonctionnalités de votre application

Pour implémenter votre application, consultez la page Utiliser la bibliothèque d'applications Android for Cars sur la création d'applications de la bibliothèque d'applications pour voitures. Veillez également à vous familiariser avec les Consignes relatives à la qualité des applications de voiture pour les applications IoT, car votre application doit les respecter.

Dans le cas des applications IoT, GridTemplate constitue un excellent choix pour afficher une liste d'appareils et autoriser l'utilisateur à interagir avec ceux-ci, comme illustré dans l'exemple suivant :

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