خانه را در اندروید راه اندازی کنید

قبل از استفاده از هر یک از APIهای Home برای اندروید، باید home را در برنامه خود مقداردهی اولیه کنید. در این مرحله، یک نمونه تک‌لایه از Home را برای زمینه محلی ایجاد خواهید کرد.

فقط یک نمونه از Home باید در یک زمان فعال باشد.

این نقطه ورود به APIهای Home است و همچنین شامل اعلام ویژگی‌ها و انواع دستگاه‌هایی است که قصد دارید با APIهای Device & Structure و Automation استفاده کنید. اگر تازه کار با اکوسیستم Google Home را شروع کرده‌اید و مطمئن نیستید که چه ویژگی‌ها یا انواع دستگاه‌هایی را ثبت کنید، ما در این راهنما برخی از رایج‌ترین‌ها را پیشنهاد کرده‌ایم.

یک نمونه خانگی ایجاد کنید

برای شروع، این بسته‌ها را به برنامه خود وارد کنید:

import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home

برای مقداردهی اولیه API های Home:

  1. یک ارجاع به زمینه Application context) دریافت کنید. این زمینه به هیچ چرخه حیات فعالیتی وابسته نیست و تا زمانی که برنامه شما زنده است، وجود خواهد داشت. می‌توانید آن را با فراخوانی getApplicationContext() در یک Activity یا Service دریافت کنید:

    val context = getApplicationContext()
    
  2. یک نمونه 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 باید از شما بخواهد که این موارد را اضافه کنید).

  3. با استفاده از زمینه کوروتین Dispatchers.IO و نمونه رجیستری خود، یک HomeConfig نمونه‌سازی کنید.

    val homeConfig = HomeConfig(
            coroutineContext = Dispatchers.IO,
            factoryRegistry = registry)
    
  4. در نهایت، با استفاده از context و HomeConfig ، یک نمونه تک‌لایه از Home ایجاد کنید که نقطه ورود به APIها است.

    val homeManager: HomeClient = Home.getClient(context, homeConfig)
    

برای جلوگیری از خطاهای مربوط به session های نامعتبر، مهم است که فقط یک نمونه singleton از Home ایجاد شود ، که این کار با قرار دادن آن در یک اعلان شیء انجام می‌شود.

برای مثال، برنامه Sample این کار را به این صورت انجام می‌دهد:

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() بازگشت داده نمی‌شوند.