Android'de Hub Activation API

Hub Activation API, Google Home hub'ını programatik olarak keşfetmenize ve etkinleştirmenize olanak tanır. Bu, özellikle kullanıcının hub'ı etkinleştirmek için başka bir yolu olmadığında (ör. ekranı olmayan bir hub'da) kullanışlıdır.

Hub Activation API'yi kullanarak hub'ları keşfedip etkinleştirebilen bir uygulama geliştirebilirsiniz. Bunu yapmak için:

  1. Yapıdaki HubManagementTrait için bir 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ğda 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")
    }