Tạo ứng dụng Internet của vạn vật (IOT)

Ứng dụng IoT cho phép người dùng thực hiện các thao tác liên quan trên những thiết bị thông minh ngay trên ô tô. Ví dụ: kiểm soát trạng thái của một số thiết bị, chẳng hạn như mở cửa nhà xe, bật công tắc đèn nhà riêng hoặc bật hệ thống an ninh nhà.

Khai báo tính năng hỗ trợ danh mục trong tệp kê khai của bạn

Ứng dụng của bạn phải khai báo androidx.car.app.category.IOT danh mục ứng dụng cho ô tô trong bộ lọc ý định của 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>

Triển khai chức năng của ứng dụng

Để triển khai ứng dụng, hãy xem bài viết Sử dụng Thư viện ứng dụng Android cho Ô tô để biết cách xây dựng ứng dụng Thư viện Car App (Ứng dụng cho ô tô). Ngoài ra, hãy nhớ đọc Nguyên tắc về chất lượng đối với ứng dụng ô tô dành cho ứng dụng IoT, vì ứng dụng của bạn sẽ được xem xét theo các nguyên tắc này.

Đối với các ứng dụng IoT, GridTemplate là một lựa chọn phù hợp để hiển thị danh sách thiết bị và cho phép người dùng tương tác với các thiết bị đó, như trong mẫu sau:

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