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 cần 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 tham khảo 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ớ làm quen với 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 tuyệt vời để 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:

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