Android'de Hub Activation API

Hub Activation API, Google Home hub'larını programatik olarak keşfetmenizi ve etkinleştirmenizi sağlar. Bu özellik, özellikle kullanıcının ekranı olmayan bir hub'ı etkinleştirmek için başka bir yolu yoksa 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")
    }