إعداد المنزل

قبل استخدام أيّ من واجهات برمجة تطبيقات Home، عليك إعداد المنزل في تطبيقك. في هذه الخطوة، ستنشئ مثيل واحد من Home للسياق المحلي.

يجب أن يكون هناك مثيل واحد فقط من Home نشطًا في كل مرة.

هذه هي نقطة الدخول إلى واجهات برمجة تطبيقات Home، وتتضمن أيضًا تحديد السمات وأنواع الأجهزة التي تريد استخدامها مع واجهات برمجة التطبيقات Device & Structure و Automation. إذا كنت قد بدأت للتو استخدام منظومة Google Home المتكاملة ولم تكن متأكّدًا من السمات أو أنواع الأجهزة التي يجب تسجيلها، لقد اقترحنا في هذا الدليل بعضًا من السمات الأكثر شيوعًا.

إنشاء مثيل Home

للبدء، استورِد الحِزم التالية إلى تطبيقك:

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

لإعداد واجهات برمجة التطبيقات Home APIs:

  1. الحصول على مرجع إلى سياق Application لا يعتمد هذا السياق على أي دورة حياة نشاط، وسيظلّ نشطًا ما دام تطبيقك نشطًا. يمكنك الحصول عليه من خلال الاتصال بالرقم Context.getApplicationContext() أو Activity.getApplication().

    val context = Context.getApplicationContext()
    
  2. أنشئ مثيلًا FactoryRegistry يتضمّن جميع السمات وأنواع الأجهزة التي تريد استخدامها في تطبيقك.

    في هذا الدليل، اقترحنا بعض الإعدادات الشائعة (أنواع الأجهزة مثل الإضاءة والمقبس وأجهزة الاستشعار والملفّ الشخصي وجهاز Thermostat وإعدادات "مساعد Google" لعمليات التشغيل الآلي) في حال لم تكن متأكّدًا من الإعدادات التي تحتاج إليها. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تسجيل السمات وأنواع الأجهزة.

    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. أخيرًا، أنشئ مثيل واحد من Home، وهو نقطة الدخول إلى واجهات برمجة التطبيقات، باستخدام السياق و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() المجمّعة.