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