API d'activation du hub sur Android

L'API Hub Activation vous permet de découvrir et d'activer un hub Google Home de manière programmatique. Il est particulièrement utile lorsque l'utilisateur n'a pas d'autre moyen d'activer un hub, par exemple s'il n'a pas d'écran.

L'API Hub Activation vous permet de créer une application capable de détecter et d'activer des hubs. Pour ce faire, procédez comme suit :

  1. Obtenez une référence à HubManagementTrait dans la structure :

    val hubManagementTrait =
      hubManagementTraitFlow.firstOrNull {
        it.metadata.sourceConnectivity?.connectivityState == ConnectivityState.ONLINE
      }
    if (hubManagementTrait == null) {
      errorsEmitter.emit(HomeException.notFound("HubManagement trait isn't online"))
    }
    
  2. Identifiez les périphériques compatibles avec un hub sur le réseau Wi-Fi :

    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. Activez un périphérique compatible avec un hub :

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