إعداد المنزل على Android

قبل استخدام أي من واجهات برمجة التطبيقات Home APIs لنظام التشغيل Android، عليك إعداد المنزل في تطبيقك. وفي هذه الخطوة، ستنشئ مثيل واحد من 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:

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

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

    في هذا الدليل، اقترحنا بعض العناصر الشائعة (أنواع الأجهزة: الإضاءة والمقبس وأجهزة الاستشعار والقواطع والثرموستات، وخصائص "الحضور" و"مساعد 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() المجمّعة.