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

قبل از استفاده از هر یک از 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:

  1. یک مرجع به زمینه Application دریافت کنید. این زمینه به چرخه عمر فعالیتی بستگی ندارد و تا زمانی که برنامه شما زنده است زنده خواهد ماند. می توانید آن را با فراخوانی Context.getApplicationContext() یا Activity.getApplication() دریافت کنید.

    val context = 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. یک HomeConfig با استفاده از زمینه اصلی Dispatchers.IO و نمونه رجیستری خود ایجاد کنید.

    val homeConfig = HomeConfig(
            coroutineContext = Dispatchers.IO,
            factoryRegistry = registry)
    
  4. در نهایت، نمونه 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() تماس نمی گیرند.