Android'de Hub Activation API

Hub Activation API, Google Home hub'ı programatik olarak keşfetmenizi ve etkinleştirmenizi sağlar. Bu özellik, özellikle kullanıcının ekranı olmayan bir hub gibi bir hub'ı etkinleştirmek için başka bir yolu olmadığında kullanışlıdır.

Hub Activation API'yi kullanma

Hub Activation API'yi kullanarak hub'ları keşfedip etkinleştirebilen bir uygulama oluşturabilirsiniz.

  1. Yapıdaki HubManagementTrait öğesine referans alın:

    val hubManagementTrait =
      hubManagementTraitFlow.firstOrNull {
        it.metadata.sourceConnectivity?.connectivityState == ConnectivityState.ONLINE
      }
    if (hubManagementTrait == null) {
      errorsEmitter.emit(HomeException.notFound("HubManagement trait isn't online"))
    }
    
  2. Kablosuz ağdaki hub özellikli cihazları belirleyin:

    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. Hub özellikli bir cihazı etkinleştirme:

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