Android 的应用管理自动化

应用管理的自动化操作是指合作伙伴应用使用 Automation API 以编程方式构建的自动化操作。

系统会禁止此类自动化操作显示在Google Home app (GHA)自动化操作列表中。

当应用管理的自动化操作被触发时,写入 Home API 活动动态的信息可以自定义,也可以完全禁止。例如,如果合作伙伴提供了一项名为“Arctic”的品牌服务,该服务通过应用管理的自动化功能实现,则合作伙伴可以指定,当其应用管理的自动化功能运行时,活动 Feed 中会引用“Arctic”服务,而不是实际的自动化功能名称。

创建应用管理的自动化操作

如需创建应用管理的自动化操作,请按以下步骤操作。

  1. 构建自动化操作的逻辑图。

  2. 可选:如果您希望自动化操作的活动显示在活动信息流中,可以填充一个 AppManagedAutomationConfig 实例,其中包含您希望在信息流中显示(而不是显示自动化操作名称)的本地化消息。可以是应用或服务的本地化名称,也可以是您需要的任何其他消息。如果您未提供任何本地化字符串,系统会像记录任何其他自动化执行一样记录自动化执行。Google 建议您设置这些本地化字符串,以确保获得最佳用户体验。

    val myAutomationConfig = AppManagedAutomationConfig(
        managingAppDisplayNames = listOf(
            LocalizedText(text = "My custom SmartApp", locale = "en-US"),
            LocalizedText(text = "Mi aplicación personalizada", locale = "es-MX")
        )
    )
    
  3. 使用 Automation.Builder 创建自动化实例。

    1. 设置自动化操作的 name
    2. 如果您希望自动化操作的执行 历史记录显示在 GHA 的“活动记录”标签页中,请将 client_feature_group 设置为 "APP_MANAGED_EXECUTION_REPORTED";如果您不希望显示自动化操作的 执行历史记录,请将 设置为 "APP_MANAGED_EXECUTION_UNREPORTED"
    3. 设置 automationGraph
    4. 可选 设置自动化操作的 appManagedAutomationConfig(请参阅第 2 步)。
  4. 最后,调用 build() 来构建 Automation 实例。

此示例展示了整个过程:

import com.google.home.automation.Automation
import com.google.home.automation.SequentialNode
import com.google.home.automation.StarterNode
import com.google.home.automation.ActionNode
import com.google.home.HomeDevice
import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffLightDevice
import com.google.home.matter.standard.MotionDetection
import com.google.home.matter.standard.OccupancySensorDevice

 HomeDevice mySensor = home.devices().list().first { device -> device.has(OccupancySensorDevice) }
 HomeDevice myLight = home.devices().list().first { device -> device.has(OnOffLightDevice) }

// 1. Create logic graph
val starterNode = StarterNode(
    device = mySensor,
    trait = OccupancySensing
)

val actionNode = ActionNode(
    device = myLight,
    command = OnOff.on()
)

// Bundle nodes into a sequential graph
val automationGraph = SequentialNode(
    nodes = listOf(starterNode, actionNode)
)

 // 2. Build the AppManagedAutomationConfig with the localized app names
val AppManagedAutomationConfig myAutomationConfig = AppManagedAutomationConfig(
        managingAppDisplayNames: [
          LocalizedText(text: "My Custom SmartApp", locale: "en-US"),
          LocalizedText(text: "Mi aplicación personalizada", locale: "es-MX")
        ]
    )

// 3. Build the Automation with both configuration and the graph
val myAutomation = Automation.Builder()
    .setName("Motion Activated Light")                         // a. Set the name
    .setClientFeatureGroup("APP_MANAGED_EXECUTION_UNREPORTED") // b. set the clientFeatureGroup
    .setAutomationGraph(automationGraph)                       // c. Attach the logic graph
    .setAppManagedAutomationConfig(myCustomConfig)             // d. Set the automationConfig
    .build() // 4. build the automation