قبل از استفاده از هر یک از APIهای Home، باید خانه را در برنامه خود مقداردهی اولیه کنید. در این مرحله، یک نمونه تکی از Home
برای زمینه محلی ایجاد می کنید.
فقط یک نمونه از Home
باید در هر زمان فعال باشد.
این نقطه ورود به API های Home است و همچنین شامل اعلام ویژگی ها و انواع دستگاه هایی است که می خواهید با Device & Structure و 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
به توسعهدهندگان کمک میکند تا اندازه باینری برنامهشان را بهینه کنند و به آنها اجازه میدهد مشخصاً مشخص کنند که کدام ویژگیها و انواع دستگاهها توسط برنامهشان استفاده میشود.
توجه داشته باشید که مجوزها و رجیستری کارخانه جدا شده اند. بنابراین، ویژگیهای ثبتنشده و انواعی که با استفاده از مجوزها در دسترس برنامه شما هستند، اما در رجیستری کارخانه گنجانده نشدهاند، با استفاده از Automation API غیرقابل دسترسی هستند و همچنین در فراخوانیهای متد انبوه traits()
یا types()
برگردانده نمیشوند.