قبل از استفاده از هر یک از APIهای Home برای Android، باید خانه را در برنامه خود مقداردهی اولیه کنید. در این مرحله، یک نمونه تکی از Home
برای زمینه محلی ایجاد می کنید.
فقط یک نمونه از Home
باید در هر زمان فعال باشد.
این نقطه ورود به API های خانگی است و همچنین شامل اعلام کدام صفات و انواع دستگاه هایی است که شما قصد استفاده از آن را با دستگاه و سازه و API های اتوماسیون دارید. اگر تازه با اکوسیستم Google Home شروع کرده اید و مطمئن نیستید که چه ویژگی ها یا انواع دستگاه برای ثبت نام وجود دارد ، ما برخی از رایج ترین ها را در این راهنما پیشنهاد کرده ایم.
یک نمونه Home ایجاد کنید
برای شروع، این بسته ها را به برنامه خود وارد کنید:
import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home
برای مقداردهی اولیه APIهای Home:
یک مرجع به زمینه
Application
دریافت کنید. این زمینه به چرخه عمر فعالیتی بستگی ندارد و تا زمانی که برنامه شما زنده است زنده خواهد ماند. می توانید آن را با فراخوانیContext.getApplicationContext()
یاActivity.getApplication()
دریافت کنید.val context = Context.getApplicationContext()
یک نمونه
FactoryRegistry
با تمام ویژگی ها و انواع دستگاه هایی که می خواهید در برنامه خود استفاده کنید ایجاد کنید.برای این راهنما ، ما برخی از موارد متداول (سبک ، پلاگین ، سنسور ، سوئیچ و انواع دستگاه ترموستات ، حضور و صفات دستیار برای اتوماسیون) را پیشنهاد کرده ایم ، در صورتی که مطمئن نیستید که به چه چیزی نیاز دارید. برای کسب اطلاعات بیشتر، به ثبت صفات و انواع دستگاه مراجعه کنید.
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))
بیانیههای وارد کردن برای هر ویژگی و نوع دستگاهی که در اینجا ثبت شده است لازم است ( Android Studio باید از شما بخواهد که اینها را اضافه کنید).
یک
HomeConfig
با استفاده از زمینه اصلیDispatchers.IO
و نمونه رجیستری خود ایجاد کنید.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
در نهایت، نمونه singleton
Home
را که نقطه ورود به APIها است، با استفاده از متن وHomeConfig
ایجاد کنید.val homeManager: HomeClient = Home.getClient(context, homeConfig)
برای جلوگیری از خطاها با جلسات نامعتبر ، مهم است که فقط یک نمونه مجرد از Home
ایجاد شود ، با بسته بندی آن در یک اعلامیه شی .
به عنوان مثال، برنامه نمونه این کار را به این صورت انجام می دهد:
internal object HomeClientModule {
@Provides
@Singleton
fun provideHomeClient(@ApplicationContext context: Context): HomeClient {
return Home.getClient(
context,
HomeConfig(
coroutineContext = IODispatcherModule.provideIoDispatcher(),
factoryRegistry = registry,
),
)
}
}
ثبت صفات و انواع دستگاه
کلاس FactoryRegistry
به توسعه دهندگان کمک می کند تا اندازه باینری برنامه خود را بهینه کنند و به آنها اجازه دهند صریحاً نشان دهند که از صفات و انواع دستگاه توسط برنامه آنها استفاده می شود.
توجه داشته باشید که مجوزها و رجیستری کارخانه جدا شده اند. بنابراین ، صفات و انواع ثبت نشده که با استفاده از مجوزها در دسترس برنامه شما هستند اما در رجیستری کارخانه گنجانده نشده اند با استفاده از API اتوماسیون غیرقابل دسترسی هستند و همچنین در traits()
یا types()
تماس نمی گیرند.