לפני שמשתמשים באחד מ-Home APIs, צריך לאתחל את הבית באפליקציה. בשלב הזה יוצרים מופע יחיד (singleton) של Home
להקשר המקומי.
רק מופע אחד של Home
יכול להיות פעיל בכל פעם.
זו נקודת הכניסה לממשקי ה-API של Home, והיא כוללת גם הצהרה על המאפיינים וסוגים של המכשירים שבהם אתם מתכוונים להשתמש בממשקי ה-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
עם כל המאפיינים וסוגים המכשירים שבהם אתם מתכוונים להשתמש באפליקציה.במדריך הזה, הצענו כמה תכונות נפוצות (סוגים של מכשירי תאורה, שקע, חיישן, מתג ותרמוסטט, מאפייני נוכחות ותכונות של Assistant לפעולות אוטומטיות), למקרה שאתם לא בטוחים מה אתם צריכים. מידע נוסף זמין במאמר רישום של מאפיינים וסוגי מכשירים.
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()
.