คุณต้องเริ่มต้นใช้งานบ้านในแอปก่อนจึงจะใช้ Home API ได้ ในขั้นตอนนี้ คุณจะต้องสร้างอินสแตนซ์ Singleton ของ Home
สำหรับบริบทในเครื่อง
Home
ควรมีการใช้งานเพียงอินสแตนซ์เดียวในแต่ละครั้ง
นี่เป็นจุดแรกเข้าของ Home API และเกี่ยวข้องกับการประกาศลักษณะและประเภทอุปกรณ์ที่คุณต้องการใช้กับ API ของอุปกรณ์และโครงสร้าง รวมถึง API การทำงานอัตโนมัติ หากคุณเพิ่งเริ่มใช้ระบบนิเวศของ 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
บริบทนี้ไม่ขึ้นอยู่กับวงจรของกิจกรรมใดๆ และจะอยู่รอดตราบใดที่แอปของคุณยังทำงานอยู่ คุณสามารถรับรหัสได้โดยโทรไปที่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 ควรแจ้งให้คุณเพิ่มคำสั่งเหล่านี้)
สร้างอินสแตนซ์
HomeConfig
ใช้บริบทDispatchers.IO
โคโริวทีนและอินสแตนซ์รีจิสทรีval homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
สุดท้าย ให้สร้างอินสแตนซ์ singleton ของ
Home
ซึ่งเป็นจุดแรกเข้าของ API โดยใช้บริบทและ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()
แบบเป็นกลุ่ม