হোম API ব্যবহার করার আগে, আপনাকে অবশ্যই আপনার অ্যাপে হোমটি আরম্ভ করতে হবে। এই ধাপে, আপনি স্থানীয় প্রসঙ্গে Home
একটি সিঙ্গলটন উদাহরণ তৈরি করবেন।
Home
শুধুমাত্র একটি উদাহরণ একবারে সক্রিয় হওয়া উচিত।
এটি হোম এপিআই-এর এন্ট্রি পয়েন্ট এবং ডিভাইস ও স্ট্রাকচার এবং অটোমেশন API-এর সাথে আপনি কোন বৈশিষ্ট্য এবং ডিভাইসের ধরনগুলি ব্যবহার করতে চান তা ঘোষণা করাও জড়িত। আপনি যদি Google Home ইকোসিস্টেম দিয়ে শুরু করে থাকেন এবং কোন বৈশিষ্ট্য বা ডিভাইসের প্রকার নিবন্ধন করতে হবে তা নিশ্চিত না হন, তাহলে আমরা এই নির্দেশিকায় এখানে সবচেয়ে সাধারণ কিছু প্রস্তাব করেছি।
একটি হোম ইন্সট্যান্স তৈরি করুন
শুরু করতে, আপনার অ্যাপে এই প্যাকেজগুলি আমদানি করুন:
import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home
হোম এপিআই শুরু করতে:
Application
প্রসঙ্গে একটি রেফারেন্স পান। এই প্রেক্ষাপট কোনো কার্যকলাপ জীবনচক্রের উপর নির্ভর করে না, এবং যতদিন আপনার অ্যাপ বেঁচে থাকবে ততদিন বেঁচে থাকবে। আপনিContext.getApplicationContext()
বাActivity.getApplication()
কল করে এটি পেতে পারেন।val context = Context.getApplicationContext()
আপনি আপনার অ্যাপে ব্যবহার করতে চান এমন সমস্ত বৈশিষ্ট্য এবং ডিভাইসের ধরন সহ একটি
FactoryRegistry
উদাহরণ তৈরি করুন।এই নির্দেশিকাটির জন্য, আমরা কিছু সাধারণ (হালকা, প্লাগ, সেন্সর, সুইচ এবং থার্মোস্ট্যাট ডিভাইসের ধরন, উপস্থিতি এবং অটোমেশনের জন্য সহকারী বৈশিষ্ট্য) সুপারিশ করেছি, যদি আপনি নিশ্চিত না হন যে আপনার কী প্রয়োজন। আরও জানতে, বৈশিষ্ট্য এবং ডিভাইসের প্রকারের নিবন্ধন দেখুন।
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
coroutine প্রসঙ্গ এবং আপনার রেজিস্ট্রি উদাহরণ ব্যবহার করে একটিHomeConfig
চালু করুন।val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
পরিশেষে, প্রসঙ্গ এবং
HomeConfig
ব্যবহার করে,Home
এর সিঙ্গলটন ইনস্ট্যান্স তৈরি করুন, যা API-এর এন্ট্রি পয়েন্ট।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
ক্লাস ডেভেলপারদের তাদের অ্যাপের বাইনারি সাইজ অপ্টিমাইজ করতে সাহায্য করে যাতে তারা স্পষ্টভাবে নির্দেশ করে যে কোন বৈশিষ্ট্য এবং ডিভাইসের ধরন তাদের অ্যাপ ব্যবহার করছে।
নোট করুন যে অনুমতি এবং কারখানা রেজিস্ট্রি decoupled হয়. তাই, অনিবন্ধিত বৈশিষ্ট্য এবং প্রকারগুলি যেগুলি অনুমতি ব্যবহার করে আপনার অ্যাপে উপলব্ধ কিন্তু ফ্যাক্টরি রেজিস্ট্রিতে অন্তর্ভুক্ত নয় সেগুলি অটোমেশন API ব্যবহার করে অ্যাক্সেসযোগ্য নয় এবং বাল্ক traits()
বা types()
পদ্ধতি কলগুলিতে ফেরত দেওয়া হয় না৷