Android के लिए Home API का इस्तेमाल करने से पहले, आपको अपने ऐप्लिकेशन में होम को शुरू करना होगा. इस चरण में, आपको लोकल कॉन्टेक्स्ट के लिए सिंगलटन इंस्टेंस Home
बनाना होगा.
एक बार में, Home
का सिर्फ़ एक इंस्टेंस चालू होना चाहिए.
यह Home API का एंट्री पॉइंट है. इसमें यह भी तय किया जाता है कि Device & Structure और Automation API के साथ, आपको कौनसी ट्रेट और डिवाइस टाइप इस्तेमाल करने हैं. अगर आपने अभी-अभी Google 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
इंस्टेंस बनाएं.इस गाइड में, हमने कुछ सामान्य डिवाइसों के टाइप (जैसे, लाइट, प्लग, सेंसर, स्विच, और थर्मोस्टैट) और ऑटोमेशन के लिए, मौजूदगी और Assistant की सुविधाओं के बारे में बताया है. अगर आपको नहीं पता कि आपको क्या चाहिए, तो यह जानकारी आपके काम आ सकती है. ज़्यादा जानने के लिए, ट्रेडमार्क और डिवाइस टाइप का रजिस्ट्रेशन लेख पढ़ें.
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 से आपको इन्हें जोड़ने के लिए कहा जाएगा).
Dispatchers.IO
कोरोटीन कॉन्टेक्स्ट और अपने रजिस्ट्री इंस्टेंस का इस्तेमाल करके,HomeConfig
को इंस्टैंटिएट करें.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
आखिर में, कॉन्टेक्स्ट और
HomeConfig
का इस्तेमाल करके,Home
का सिंगलटन इंस्टेंस बनाएं. यह एपीआई का एंट्री पॉइंट है.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()
तरीके से कॉल करने पर भी नहीं दिखाया जाता.