قبل استخدام أيّ من واجهات برمجة تطبيقات 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:
الحصول على مرجع إلى سياق
Application
لا يعتمد هذا السياق على أي دورة حياة نشاط، وسيظلّ نشطًا ما دام تطبيقك نشطًا. يمكنك الحصول عليه من خلال الاتصال بالرقمContext.getApplicationContext()
أوActivity.getApplication()
.val context = Context.getApplicationContext()
أنشئ مثيلًا
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 إضافة هذه البيانات).
أنشئ مثيلًا لـ
HomeConfig
باستخدامDispatchers.IO
سياق دالة التشغيل المتعدّد ومثيل قاعدة بيانات المسجّلين.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
أخيرًا، أنشئ مثيل واحد من
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()
المجمّعة.