Prima di utilizzare una delle API Home per Android, devi inizializzare la casa nella tua app. In questo passaggio, creerai un'istanza singleton di Home
per il contesto locale.
Deve essere attiva una sola istanza di Home
alla volta.
Questo è il punto di accesso alle API per la casa e comporta anche la dichiarazione di quali tratti e tipi di dispositivi intendi utilizzare con le API Device & Structure e Automation. Se hai appena iniziato a utilizzare l'ecosistema Google Home e non sai quali tratti o tipi di dispositivi registrare, in questa guida abbiamo suggerito alcuni dei più comuni.
Creare un'istanza Home
Per iniziare, importa questi pacchetti nella tua app:
import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home
Per inizializzare le API Home:
Ottieni un riferimento al contesto
Application
. Questo contesto non dipende da alcun ciclo di vita dell'attività e rimarrà attivo finché la tua app è attiva. Puoi ottenerlo chiamandoContext.getApplicationContext()
oActivity.getApplication()
.val context = Context.getApplicationContext()
Crea un'istanza
FactoryRegistry
con tutti i tratti e i tipi di dispositivi che intendi utilizzare nella tua app.Per questa guida, abbiamo suggerito alcuni tipi comuni (dispositivi di tipo Luce, Presa, Sensore, Interruttore e Termostato, tratti di presenza e dell'assistente per le automazioni), nel caso tu non sappia cosa ti serve. Per saperne di più, vedi Registrazione di tratti e tipi di dispositivi.
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))
Sono richieste le istruzioni di importazione per ogni singola caratteristica e tipo di dispositivo registrato qui (Android Studio dovrebbe chiederti di aggiungerle).
Crea un'istanza di
HomeConfig
utilizzando il contesto della coroutineDispatchers.IO
e l'istanza del registro.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
Infine, crea l'istanza singleton di
Home
, che è il punto di accesso alle API, utilizzando il contesto eHomeConfig
.val homeManager: HomeClient = Home.getClient(context, homeConfig)
Per evitare errori con sessioni non valide, è importante che venga creata solo un'istanza singleton
di Home
, racchiudendola in una dichiarazione
di oggetto.
Ad esempio, l'app di esempio lo fa in questo modo:
internal object HomeClientModule {
@Provides
@Singleton
fun provideHomeClient(@ApplicationContext context: Context): HomeClient {
return Home.getClient(
context,
HomeConfig(
coroutineContext = IODispatcherModule.provideIoDispatcher(),
factoryRegistry = registry,
),
)
}
}
Registrazione di tratti e tipi di dispositivi
La classe FactoryRegistry
aiuta gli sviluppatori a ottimizzare le dimensioni del binario dell'app
consentendo loro di indicare esplicitamente quali caratteristiche e tipi di dispositivi vengono utilizzati dalla loro
app.
Tieni presente che le autorizzazioni e il registro di fabbrica sono disaccoppiati. Pertanto,
i tipi e le caratteristiche non registrati disponibili per la tua app tramite le autorizzazioni,
ma non inclusi nel registro di fabbrica, non sono accessibili tramite l'API Automation e non vengono restituiti nelle chiamate di metodi bulk traits()
o types()
.