Создайте приложение для Интернета вещей

Приложения для Интернета вещей позволяют пользователям выполнять необходимые действия на подключенных устройствах, не выходя из автомобиля. Например, можно управлять состоянием определенных устройств, таких как открытие гаражных ворот, включение/выключение света в доме или активация системы домашней безопасности.

Укажите поддержку категорий в вашем манифесте.

Вашему приложению необходимо объявить категорию автомобильных приложений androidx.car.app.category.IOT в фильтре намерений своего 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>

Реализуйте функциональность вашего приложения.

Для внедрения вашего приложения обратитесь к руководству по использованию библиотеки приложений Android для автомобилей, чтобы узнать, как создаются приложения из этой библиотеки. Также обязательно ознакомьтесь с рекомендациями по качеству приложений для IoT , поскольку ваше приложение будет проверяться на соответствие этим рекомендациям.

Для IoT-приложений GridTemplate — отличный выбор для отображения списка устройств и предоставления пользователю возможности взаимодействовать с ними, как показано в следующем примере:

val listBuilder = ItemList.Builder()
val headerBuilder = Header.Builder()
val garageIcon = IconCompat.createWithResource(
    carContext,
    R.drawable.ic_garage
)

listBuilder.addItem(
    GridItem.Builder()
        .setTitle("Garage door")
        .setImage(
            CarIcon.Builder(garageIcon).build(),
            GridItem.IMAGE_TYPE_ICON
        )
        .setOnClickListener {
            // Handle user interactions
        }
        .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()
    .setHeader(
        headerBuilder.setTitle("Devices")
            .setStartHeaderAction(Action.APP_ICON).build()
    )
    .setSingleList(listBuilder.build())
    .build()