Home API를 사용하기 전에 앱에서 홈을 초기화해야 합니다. 이 단계에서는 로컬 컨텍스트에 Home
의 싱글톤 인스턴스를 만듭니다.
Home
의 인스턴스는 한 번에 하나만 활성화되어야 합니다.
이는 Home API의 진입점이며 Device & Structure 및 Automation 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
인스턴스를 만듭니다.이 가이드에서는 필요한 항목을 잘 모르는 경우를 대비해 몇 가지 일반적인 항목 (조명, 플러그, 센서, 스위치, 온도 조절기 기기 유형, 자동화에 관한 재택 유무 및 어시스턴트 트레잇)을 제안했습니다. 자세한 내용은 트레잇 및 기기 유형 등록을 참고하세요.
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
코루틴 컨텍스트와 레지스트리 인스턴스를 사용하여HomeConfig
를 인스턴스화합니다.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
마지막으로 컨텍스트와
HomeConfig
를 사용하여 API의 진입점인Home
의 싱글톤 인스턴스를 만듭니다.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()
메서드 호출에서 반환되지도 않습니다.