Hub Activation API unter Android

Mit der Hub Activation API kannst du programmatisch einen Google Home-Hub ermitteln und aktivieren. Das ist besonders nützlich, wenn der Nutzer keine andere Möglichkeit hat, einen Hub zu aktivieren, z. B. bei einem Hub ohne Display.

Hub Activation API verwenden

Mit der Hub Activation API können Sie eine App entwickeln, die Hubs erkennen und aktivieren kann.

  1. Rufen Sie einen Verweis auf HubManagementTrait in der Struktur ab:

    val hubManagementTrait =
      hubManagementTraitFlow.firstOrNull {
        it.metadata.sourceConnectivity?.connectivityState == ConnectivityState.ONLINE
      }
    if (hubManagementTrait == null) {
      errorsEmitter.emit(HomeException.notFound("HubManagement trait isn't online"))
    }
    
  2. Hub-kompatible Geräte im WLAN identifizieren:

    try {
      val unused = hubManagementTrait.discoverAvailableHubs()
    } catch (e: Exception) {
      Log.d(TAG_HUB_DISCOVERY, "Error discovering hubs $e")
      errorsEmitter.emit(e)
    }
    
    val hubManagementTraitFlow = structureFlow.flatMapLatest { it.trait(HubManagement) }
    
    val discoveredHubs =
      hubManagementTraitFlow
        .map { it.discoveredHubsList }
        .handleErrors()
        .flowOn(ioDispatcher)
        .stateIn(
          scope = CoroutineScope(viewModelScope.coroutineContext + ioDispatcher),
          started = SharingStarted.WhileSubscribed(),
          listOf(),
        )
    
  3. So aktivierst du ein hubfähiges Gerät:

    try {
      val unused = hubManagementTrait.activateHub(hub)
    } catch (e: Exception) {
      Log.d("Hub Activation", "Error activating hub $e")
    }