Hub Activation API di Android

Hub Activation API memungkinkan Anda menemukan dan mengaktifkan hub Google Home secara terprogram. Hal ini sangat berguna saat pengguna tidak memiliki cara lain untuk mengaktifkan hub, misalnya untuk hub yang tidak memiliki layar.

Dengan menggunakan Hub Activation API, Anda dapat membangun aplikasi yang dapat menemukan dan mengaktifkan hub. Untuk melakukannya:

  1. Dapatkan referensi ke HubManagementTrait dalam struktur:

    val hubManagementTrait =
      hubManagementTraitFlow.firstOrNull {
        it.metadata.sourceConnectivity?.connectivityState == ConnectivityState.ONLINE
      }
    if (hubManagementTrait == null) {
      errorsEmitter.emit(HomeException.notFound("HubManagement trait isn't online"))
    }
    
  2. Identifikasi perangkat yang mendukung hub di jaringan 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. Mengaktifkan perangkat yang mendukung hub:

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