Compila una app de Internet de las cosas

Las apps de IoT permiten a los usuarios realizar acciones relevantes en dispositivos conectados desde el vehículo. Por ejemplo, para controlar el estado de ciertos dispositivos, como abrir una puerta de garaje, activar los interruptores de luz del hogar o habilitar la seguridad de la casa.

Declara la compatibilidad de categoría en tu manifiesto

Tu app debe declarar la categoría de app para vehículos androidx.car.app.category.IOT en el filtro de intents de su 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>

Implementa la funcionalidad de tu app

Si deseas implementar tu app, consulta Cómo usar la Biblioteca de apps de Android para vehículos donde se explica cómo se compilan las apps de la Biblioteca de apps para vehículos. Además, familiarízate con los lineamientos de calidad de apps para vehículos en las apps de IoT, ya que tu app se revisará de acuerdo con estos lineamientos.

En el caso de las apps de IoT, GridTemplate es una excelente opción para mostrar una lista de dispositivos y permitir que el usuario interactúe con ellos, como se muestra en el siguiente ejemplo:

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