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