Antes de usar qualquer uma das APIs Home para Android, inicialize a casa no
app. Nesta etapa, você vai criar uma instância singleton de
Home
para o contexto local.
Apenas uma instância de Home
pode estar ativa por vez.
Esse é o ponto de entrada para as APIs Home e também envolve declarar quais características e tipos de dispositivos você pretende usar com as APIs Device & Structure e Automation. Se você está começando a usar o ecossistema do Google Home e não sabe quais características ou tipos de dispositivos registrar, sugerimos alguns dos mais comuns neste guia.
Criar uma instância de casa
Para começar, importe estes pacotes para seu app:
import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home
Para inicializar as APIs Home:
Acesse uma referência ao contexto
Application
. Esse contexto não depende de nenhum ciclo de vida de atividade e vai durar enquanto o app estiver ativo. Para isso, chameContext.getApplicationContext()
ouActivity.getApplication()
.val context = Context.getApplicationContext()
Crie uma instância
FactoryRegistry
com todos os traços e tipos de dispositivos que você pretende usar no app.Para este guia, sugerimos alguns comuns (tipos de dispositivos de luz, plugue, sensor, interruptor e termostato, além de traços de presença e do Google Assistente para automações), caso você não saiba o que precisa. Para saber mais, consulte Registro de características e tipos de dispositivos.
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))
São necessárias instruções de importação para cada característica individual e tipo de dispositivo registrado aqui. O Android Studio vai pedir que você adicione essas informações.
Instancie um
HomeConfig
usando o contexto de corrotinaDispatchers.IO
e sua instância de registro.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
Por fim, crie a instância singleton de
Home
, que é o ponto de entrada para as APIs, usando o contexto e oHomeConfig
.val homeManager: HomeClient = Home.getClient(context, homeConfig)
Para evitar erros com sessões inválidas, é importante que apenas uma instância singleton
de Home
seja criada, envolvendo-a em uma declaração de
objeto.
Por exemplo, o app de amostra faz isso desta forma:
internal object HomeClientModule {
@Provides
@Singleton
fun provideHomeClient(@ApplicationContext context: Context): HomeClient {
return Home.getClient(
context,
HomeConfig(
coroutineContext = IODispatcherModule.provideIoDispatcher(),
factoryRegistry = registry,
),
)
}
}
Registro de características e tipos de dispositivos
A classe FactoryRegistry
ajuda os desenvolvedores a otimizar o tamanho binário do app, permitindo que eles indiquem explicitamente quais características e tipos de dispositivos são usados pelo app.
As permissões e o registro de fábrica são dissociados. Portanto, os traços e tipos não registrados que estão disponíveis para seu app usando permissões, mas não incluídos no registro de fábrica, não podem ser acessados usando a API Automation nem são retornados nas chamadas de método em massa traits()
ou types()
.