Android पर होम को शुरू करना

Android के लिए उपलब्ध 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 API को शुरू करने के लिए:

  1. Application कॉन्टेक्स्ट का रेफ़रंस पाएं. यह कॉन्टेक्स्ट, किसी भी गतिविधि के लाइफ़साइकल पर निर्भर नहीं करता. साथ ही, यह तब तक लाइव रहेगा, जब तक आपका ऐप्लिकेशन चालू रहेगा. इसे पाने के लिए, Context.getApplicationContext() या Activity.getApplication() पर कॉल करें.

    val context = Context.getApplicationContext()
    
  2. अपने ऐप्लिकेशन में इस्तेमाल किए जाने वाले सभी ट्रैट और डिवाइस टाइप के साथ, 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 आपको इन्हें जोड़ने के लिए कहा जाएगा).

  3. Dispatchers.IO कोरयूटी संदर्भ और अपनी रजिस्ट्री इंस्टेंस का इस्तेमाल करके, HomeConfig को तुरंत लागू करें.

    val homeConfig = HomeConfig(
            coroutineContext = Dispatchers.IO,
            factoryRegistry = registry)
    
  4. आखिर में, Home का सिंगलटन इंस्टेंस बनाएं. यह एपीआई का एंट्री पॉइंट है. इसके लिए, संदर्भ और HomeConfig का इस्तेमाल करें.

    val homeManager: HomeClient = Home.getClient(context, homeConfig)
    

अमान्य सेशन से जुड़ी गड़बड़ियों से बचने के लिए, ऑब्जेक्ट के एलान में Home को रैप करके, यह ज़रूरी है कि सिर्फ़ सिंगलटन के तौर पर 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() मेथड कॉल में भी नहीं दिखते.