Trước khi sử dụng bất kỳ API Home nào, bạn phải khởi chạy Home trong ứng dụng. Trong bước này, bạn sẽ tạo một thực thể singleton của Home
cho ngữ cảnh cục bộ.
Mỗi lần chỉ có một thực thể của Home
hoạt động.
Đây là điểm truy cập vào API Home và cũng liên quan đến việc khai báo các đặc điểm và loại thiết bị mà bạn dự định sử dụng với API Cấu trúc và thiết bị cũng như API Tự động hoá. Nếu bạn mới bắt đầu sử dụng hệ sinh thái Google Home và không chắc nên đăng ký loại thiết bị hoặc đặc điểm nào, thì chúng tôi đã đề xuất một số loại thiết bị và đặc điểm phổ biến nhất trong hướng dẫn này.
Tạo một thực thể Home
Để bắt đầu, hãy nhập các gói sau vào ứng dụng:
import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home
Cách khởi chạy API Home:
Tạo một tham chiếu đến ngữ cảnh
Application
. Ngữ cảnh này không phụ thuộc vào bất kỳ vòng đời hoạt động nào và sẽ tồn tại miễn là ứng dụng của bạn còn hoạt động. Bạn có thể lấy thông tin này bằng cách gọiContext.getApplicationContext()
hoặcActivity.getApplication()
.val context = Context.getApplicationContext()
Tạo một thực thể
FactoryRegistry
với tất cả các đặc điểm và loại thiết bị mà bạn định sử dụng trong ứng dụng.Trong hướng dẫn này, chúng tôi đã đề xuất một số loại thiết bị phổ biến (Đèn, Ổ cắm, Cảm biến, Chuyển đổi và Điều nhiệt, tính năng hiện diện và Trợ lý cho các tính năng tự động hoá), phòng trường hợp bạn không chắc mình cần gì. Để tìm hiểu thêm, hãy xem phần Đăng ký các đặc điểm và loại thiết bị.
val registry = FactoryRegistry( traits = listOf( AirQuality, AreaAttendanceState, AreaPresenceState, AssistantBroadcast, AssistantFulfillment, BooleanState, ColorControl, ExtendedColorControl, FlowMeasurement, IlluminanceMeasurement, LevelControl, Notification, OccupancySensing, OnOff, RelativeHumidityMeasurement, Switch, TemperatureMeasurement, Thermostat), types = listOf( AirQualitySensorDevice, ColorDimmerSwitchDevice, ColorTemperatureLightDevice, ContactSensorDevice, DimmableLightDevice, DimmablePlugInUnitDevice, DimmerSwitchDevice, ExtendedColorLightDevice, FlowSensorDevice, GenericSwitchDevice, HumiditySensorDevice, LightSensorDevice, OccupancySensorDevice, OnOffLightDevice, OnOffLightSwitchDevice, OnOffPluginUnitDevice, OnOffSensorDevice, SpeakerDevice, TemperatureSensorDevice, ThermostatDevice))
Bạn bắt buộc phải có câu lệnh nhập cho từng đặc điểm và loại thiết bị riêng lẻ được đăng ký tại đây (Android Studio sẽ nhắc bạn thêm các câu lệnh này).
Tạo bản sao
HomeConfig
bằng cách sử dụng ngữ cảnh coroutineDispatchers.IO
và thực thể đăng ký của bạn.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
Cuối cùng, hãy tạo thực thể singleton của
Home
. Đây là điểm truy cập vào các API, sử dụng ngữ cảnh vàHomeConfig
.val homeManager: HomeClient = Home.getClient(context, homeConfig)
Để tránh lỗi với các phiên không hợp lệ, quan trọng là bạn chỉ tạo một thực thể singleton của Home
, bằng cách gói thực thể đó trong một tuyên bố đối tượng.
Ví dụ: ứng dụng mẫu thực hiện việc này như sau:
internal object HomeClientModule {
@Provides
@Singleton
fun provideHomeClient(@ApplicationContext context: Context): HomeClient {
return Home.getClient(
context,
HomeConfig(
coroutineContext = IODispatcherModule.provideIoDispatcher(),
factoryRegistry = registry,
),
)
}
}
Đăng ký các đặc điểm và loại thiết bị
Lớp FactoryRegistry
giúp nhà phát triển tối ưu hoá kích thước tệp nhị phân của ứng dụng bằng cách cho phép họ chỉ định rõ ràng những đặc điểm và loại thiết bị mà ứng dụng của họ sử dụng.
Xin lưu ý rằng các quyền và sổ đăng ký ban đầu được tách biệt. Do đó, bạn không thể truy cập vào các đặc điểm và loại chưa đăng ký có sẵn cho ứng dụng của mình bằng cách sử dụng các quyền nhưng không có trong sổ đăng ký ban đầu bằng Automation API, cũng như không được trả về trong các lệnh gọi phương thức traits()
hoặc types()
hàng loạt.