Home के किसी भी एपीआई का इस्तेमाल करने से पहले, आपको अपने ऐप्लिकेशन में होम को शुरू करना होगा. इस चरण में, आपको स्थानीय संदर्भ के लिए Home
का सिंगलटन इंस्टेंस बनाना होगा.
एक बार में Home
का सिर्फ़ एक इंस्टेंस चालू होना चाहिए.
यह Home API का एंट्री पॉइंट है. इसमें यह भी बताया जाता है कि आपको डिवाइस और स्ट्रक्चर और ऑटोमेशन एपीआई के साथ किन विशेषताओं और डिवाइस टाइप का इस्तेमाल करना है. अगर आपने अभी-अभी Google Home नेटवर्क का इस्तेमाल शुरू किया है और आपको यह नहीं पता कि कौनसे ट्रैट या डिवाइस टाइप रजिस्टर करने हैं, तो हमने इस गाइड में कुछ सबसे सामान्य ट्रैट के सुझाव दिए हैं.
होम इंस्टेंस बनाना
शुरू करने के लिए, अपने ऐप्लिकेशन में ये पैकेज इंपोर्ट करें:
import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home
Home के एपीआई को शुरू करने के लिए:
Application
कॉन्टेक्स्ट का रेफ़रंस पाएं. यह कॉन्टेक्स्ट, किसी भी गतिविधि के लाइफ़साइकल पर निर्भर नहीं करता. साथ ही, यह तब तक मौजूद रहेगा, जब तक आपका ऐप्लिकेशन चालू रहेगा. इसे पाने के लिए,Context.getApplicationContext()
याActivity.getApplication()
पर कॉल करें.val context = 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()
मेथड कॉल में भी नहीं दिखते.