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 Hub Activation API, Anda dapat membuat 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 kompatibel dengan 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. Aktifkan perangkat yang kompatibel dengan hub:

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