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