Tạo ứng dụng Internet của vạn vật (IOT)
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Ứ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();
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Build an internet of things app\n\nIOT apps enable users to take relevant actions on connected devices from within\nthe car. Examples include controlling the state of certain devices, such as\nopening a garage door, flipping home light switches, or enabling home security.\n\nDeclare category support in your manifest\n-----------------------------------------\n\nYour app needs to declare the `androidx.car.app.category.IOT`\n[car app category](/training/cars/apps#supported-app-categories) in the intent\nfilter of its [`CarAppService`](/reference/androidx/car/app/CarAppService). \n\n \u003capplication\u003e\n ...\n \u003cservice\n ...\n android:name=\".MyCarAppService\"\n android:exported=\"true\"\u003e\n \u003cintent-filter\u003e\n \u003caction android:name=\"androidx.car.app.CarAppService\" /\u003e\n \u003ccategory android:name=\"androidx.car.app.category.IOT\"/\u003e\n \u003c/intent-filter\u003e\n \u003c/service\u003e\n ...\n \u003capplication\u003e\n\nImplement your app's functionality\n----------------------------------\n\nTo implement your app, refer to\n[Using the Android for Cars App Library](/training/cars/apps) on how Car App\nLibrary apps are built. Also, be sure to familiarize yourself with the\n[Car App Quality Guidelines for IOT apps](/docs/quality-guidelines/car-app-quality?category=iot#app_categories)\n, as your app will be reviewed against these guidelines.\n\nFor IOT apps, the [`GridTemplate`](/reference/androidx/car/app/model/GridTemplate)\nis a great choice for displaying a list of devices and allowing the user to\ninteract with them, as shown in the following sample: \n\n### Kotlin\n\n```kotlin\nval listBuilder = ItemList.Builder()\n\nlistBuilder.addItem(\n GridItem.Builder()\n .setTitle(\"Garage door\")\n .setImage(...)\n // Handle user interactions\n .setOnClickListener {...}\n .build()\n)\n\nlistBuilder.addItem(\n GridItem.Builder()\n .setTitle(\"Garage lights\")\n // Show a loading indicator until the status of the device is known\n // (call invalidate() when the status is known to refresh the screen)\n .setLoading(true)\n .build()\n)\n\nreturn GridTemplate.Builder()\n .setTitle(\"Devices\")\n .setHeaderAction(Action.APP_ICON)\n .setSingleList(listBuilder.build())\n .build()\n```\n\n### Java\n\n```java\nItemList.Builder listBuilder = new ItemList.Builder();\n\nlistBuilder.addItem(\n new GridItem.Builder()\n .setTitle(\"Garage door\")\n .setImage(...)\n // Handle user interactions\n .setOnClickListener(() -\u003e {...})\n .build()\n);\n\nlistBuilder.addItem(\n new GridItem.Builder()\n .setTitle(\"Garage lights\")\n // Show a loading indicator until the status of the device is known\n // (call invalidate() when the status is known to refresh the screen)\n .setLoading(true)\n .build()\n);\n\nreturn new GridTemplate.Builder()\n .setTitle(\"Devices\")\n .setHeaderAction(Action.APP_ICON)\n .setSingleList(listBuilder.build())\n .build();\n```"]]