Hub Activation API على Android

تتيح لك Hub Activation API العثور على مركز Google Home وتفعيله آليًا. وهي مفيدة بشكل خاص عندما لا يكون لدى المستخدم طريقة أخرى لتفعيل جهاز التحكّم، كما هو الحال مع جهاز تحكّم لا يتضمّن شاشة.

باستخدام Hub Activation API، يمكنك إنشاء تطبيق يمكنه العثور على المحاور وتفعيلها. ولإجراء ذلك:

  1. احصل على مرجع إلى HubManagementTrait في البنية:

    val hubManagementTrait =
      hubManagementTraitFlow.firstOrNull {
        it.metadata.sourceConnectivity?.connectivityState == ConnectivityState.ONLINE
      }
    if (hubManagementTrait == null) {
      errorsEmitter.emit(HomeException.notFound("HubManagement trait isn't online"))
    }
    
  2. تحديد أي أجهزة يمكن استخدامها كمركز على شبكة 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. تفعيل جهاز متوافق مع مركز التحكّم:

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