Antes de usar qualquer uma das APIs Home para Android, você precisa inicializar a tela inicial do seu aplicativo. Nesta etapa, você criará umsolteiro instância deHome para o contexto local.
Apenas uma instância de Home deve estar ativa por vez.
Este é o ponto de entrada para as APIs da Casa e também envolve declarar quais características e tipos de dispositivos você pretende usar com as APIs de Dispositivo e Estrutura e de Automação. 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 do Home
Para começar, importe estes pacotes para o seu aplicativo:
import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home
Para inicializar as APIs da página inicial:
Obtenha uma referência para o
Applicationcontexto. Esse contexto não depende de nenhum ciclo de vida de atividade e permanecerá ativo enquanto seu aplicativo estiver em execução. Para isso, chamegetApplicationContext()em umActivityouService:val context = getApplicationContext()Crie uma instância
FactoryRegistrycom todas as características e tipos de dispositivos que você pretende usar no app.Para este guia, sugerimos alguns comuns (tipos de dispositivo 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))Declarações de importação para cada característica e tipo de dispositivo individual registrado aqui são necessárias (Android Studio deve solicitar que você as adicione).
Instancie um
HomeConfigusando o contexto de corrotinaDispatchers.IOe 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 aplicativo de exemplo 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.
Note que as permissões e o registro de fábrica são independentes. Portanto, características 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().