在 Android 上初始化主畫面

使用任何 Android 適用的 Home API 前,您必須先在應用程式中初始化住家。在這個步驟中,您將為本機環境建立 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,請按照下列步驟操作:

  1. 取得 Application 結構定義的參照。這個內容不依附於任何活動生命週期,只要應用程式保持運作,這個內容就會存在。您可以呼叫 Context.getApplicationContext()Activity.getApplication() 取得。

    val context = Context.getApplicationContext()
    
  2. 建立FactoryRegistry 執行個體,其中包含您要在應用程式中使用的所有特徵和裝置類型。

    在本指南中,我們建議使用一些常見的裝置類型 (燈具、插座、感應器、開關和溫度控制器裝置類型,以及自動化作業的在場狀態和 Google 助理特徵),以防您不確定需要哪些裝置。詳情請參閱「特徵和裝置類型註冊」。

    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. 最後,請使用內容和 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 類別,明確指出應用程式使用的特徵和裝置類型,藉此最佳化應用程式二進位檔大小。

請注意,權限和工廠登錄程序是分開的。因此,應用程式可透過權限存取但未納入工廠登錄的未註冊特徵和型別,無法透過 Automation API 存取,也不會透過大量 traits()types() 方法呼叫傳回。