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

قبل استخدام أي من واجهات برمجة التطبيقات Home لنظام التشغيل 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 API، اتّبِع الخطوات التالية:

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

    val 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. أخيرًا، أنشئ مثيلاً singleton من 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().