Android电视


AndroidTV平台允许您控制Android TV设备或亚马逊消防电视设备。

设置此集成时,建议您不要使用ADB服务器,而是使用内置的Python ADB实现。这简化了设置,使问题更容易解决问题。如果此方法存在稳定性问题,那么您可能希望尝试使用ADB服务器。看到ADB设置部分以获取更多信息。

设备准备

要设置设备,您需要找到其IP地址并启用ADB调试。对于Android电视设备,请为您的设备咨询文档。

对于消防电视设备,说明如下:

  • 在您的亚马逊消防电视上打开ADB调试:
    • 从主(启动器)屏幕中选择设置。
    • 选择我的消防电视>开发人员选项。
    • 选择ADB调试。
  • 查找Amazon Fire TV设备IP地址:
    • 从主(启动器)屏幕中选择设置。
    • 选择我的火电视>关于网络。

如果设置中缺少Develper选项,请选择我的Fire TV,然后按下七次按钮。

配置

可以通过使用此MY按钮将Android T必威体育存款V添加到您必威是什么的家庭助理实例中:

选项

可以通过采取以下步骤来通过用户界面设置Android TV的选项:

  • 浏览您的家庭助理实例必威体育存款。必威是什么
  • 在侧边栏中,单击设置
  • 从“配置”菜单中选择:设备和服务
  • 如果配置了多个Android TV的实例,请选择要配置的实例。
  • 点击“选项”
配置应用程序列表

在这里,您可以定义由后端库自动检测到的应用程序,其中键是应用程序ID,并且值是将在UI中显示的应用程序名称。如果未提供名称,并且选项排除名称未知的应用程序已启用,该应用将永远不会在源列表中显示。

检索运行应用程序作为来源列表

是否将运行应用程序作为源列表检索。如果检查了此选项,则将检索并将运行应用程序用作源。如果没有,将只有一个来源:当前应用。

排除名称未知的应用程序

从源列表中排除具有未知名的应用程序。如果已选中此选项,则仅在配置的应用程序列表选项将在来源中列出。

将屏幕捕获用于专辑粉艺术

确定是否应从屏幕上显示的内容中提取专辑曲。

ADB外壳关闭命令

adb shell命令覆盖默认关闭命令。空白以使用默认值。

ADB Shell打开命令

adb shell命令覆盖默认打开命令。空白以使用默认值。

配置状态检测规则

在这里,您可以配置规则密钥是应用程序ID且值为状态检测规则列表的规则列表。例如,检测规则的有效值是[“待机”,{“ play”:{“ Media_session_state”:4}},{“ paused”:{“ Media_session_state”:3,“ Wake_lock_size”:4}}]。请注意,规则值必须始终在方括号内([...])。请参阅该部分自定义状态检测有关更多信息。

ADB设置

该集成通过将ADB命令发送到您的Android TV / Fire TV设备来起作用。有两种方法可以实现这一目标。

首次连接到设备时,Android TV / Fire TV上将出现一个对话框,要求您批准连接。选中说“始终允许此设备连接”的框,然后命中确定。

1. Python ADB实施

默认方法是使用ADB壳Python包。从家庭助理助必威是什么理0.101起,如果需要键进行身份验证,并且不提供。ADB密钥设置选项,然后家庭助理将为您生成钥匙。必威是什么

能够提供ADB密钥在集成设置上,您需要启用高级模式

在家庭助理0.10必威是什么1之前,这种方法对新设备的运行不佳。已经努力解决这些问题,但是如果您遇到问题,则应使用ADB服务器选项。

2. ADB服务器

第二种选择是使用ADB服务器连接到您的Android TV和Fire TV设备。

要在集成设置上配置ADB服务器,您需要启用高级模式

使用这种方法,家庭助理将将ADB命令发送到必威是什么服务器,然后将其发送到Android TV / Fire TV设备并将其报告回到家庭助理。要使用此选项,请添加adb_server_ip配置的选项。如果您正在与家用助理在同一台计算机上运行服务器,则可以使用必威是什么127.0.0.1为此值。

ADB故障排除

如果您的Android TV或Fire TV设备的设置失败,则您的ADB连接可能存在问题。这是一些可能的原因。

  1. 您的设备的IP地址错误。

  2. 设备上未启用ADB。

  3. 您已经通过另一台设备通过ADB连接到Android TV / Fire TV。只能连接一台设备,因此请断开另一个设备,重新启动Android TV / Fire TV(良好的方法),然后重新启动家庭助理。必威是什么

  4. 您需要批准ADB连接;在ADB设置上面的部分。

  5. 一些Android电视设备(例如,运行Android TV的飞利浦电视)仅接受其Wi-Fi接口的初始ADB连接请求。如果您有电视连线,则需要将其连接到Wi-Fi,然后再次尝试初始连接。通过Wi-Fi授予身份验证后,您也可以通过有线接口连接到电视。

  6. 如果您的设备掉落WiFi,打破ADB连接并导致实体在家庭助理中变得无法使用,则可以安装唤醒锁实用程序(例如必威是什么Wakelock)防止这种情况发生。一些用户报告了小米MI盒子设备的问题。

  7. 如果您正在使用Python ADB实施如上所述,方法可能存在一些新设备的问题。在这种情况下,您应该使用ADB服务器而是方法。

服务

MEDIA_PLAYER.SELECT_SOURCE

您可以使用MEDIA_PLAYER.SELECT_SOURCE命令。只需提供应用程序ID作为来源。您还可以通过将应用程序ID的前缀加上一个。例如,您可以定义脚本启动和停止Netflix如下:

start_netflix顺序-服务MEDIA_PLAYER.SELECT_SOURCE目标ENTITY_IDMedia_player.fire_tv_living_room数据来源com.netflix.ninja“stop_netflix顺序-服务MEDIA_PLAYER.SELECT_SOURCE目标ENTITY_IDMedia_player.fire_tv_living_room数据来源!com.netflix.ninja”

androidtv.adb_command

服务androidtv.adb_command允许您将键或ADB Shell命令发送到Android TV / Fire TV设备。如果有任何输出,它将存储在'adb_response'属性(即state_attr('Media_player.android_tv_living_room','adb_response')在模板中)并记录在信息级别。

服务数据属性 选修的 描述
ENTITY_ID Android TV / Fire TV实体的名称。
命令 键命令或ADB shell命令。

行动你的自动化设置看起来像这样:

行动服务androidtv.adb_command目标ENTITY_IDMedia_player.androidtv_tv_living_room数据命令家”

可用的关键命令包括:

  • 力量
  • 睡觉
  • 向上
  • 向下
  • 左边
  • 正确的
  • 中心
  • 后退
  • 菜单

关键命令的完整列表可以在后端找到AndroidTV包裹。

您也可以使用命令get_properties检索家庭助理使用以更新设备状态的属性。必威是什么这些将存储在媒体播放器的'adb_response'属性并记录在信息级别。这些信息可用于帮助改善后端的状态检测AndroidTV包裹,也定义自己的自定义状态检测规则。

可以找到各种意图的清单这里

androidtv.learn_sendevent(对于更快的ADB命令)

通过ADB发送命令时,该设备的响应速度可能很慢。问题不是ADB,而是Android命令输入这用于执行这些动作。发送这些命令的更快方法是使用Androidsendevent命令。挑战是这些命令是特定于设备的。为了帮助用户学习设备的命令,Android TV集成提供了androidtv.learn_sendevent服务。它的用法如下:

服务数据属性 选修的 描述
ENTITY_ID Android TV / Fire TV实体的名称。
  1. 致电androidtv.learn_sendevent服务。
  2. 在8秒钟内,点击Android TV / Fire TV遥控器上的一个按钮。
  3. 8秒钟后,将出现持续的通知,其中包含可以通过该命令发送的等效命令androidtv.adb_command服务。此命令也可以在adb_response媒体播放器在家庭助理中的属性,并将在信息级别记录。必威是什么

例如,服务呼叫脚本可以从中改变:

#发送“ UP”命令(慢)-服务androidtv.adb_command目标ENTITY_IDMedia_player.fire_tv_living_room数据命令向上

因此:

#使用`sendevent'(更快)发送“ UP”命令-服务androidtv.adb_command目标ENTITY_IDMedia_player.fire_tv_living_room数据命令sendevent/dev/intup/event444786979&&sendevent/dev/intup/event411721&&sendevent/dev/intup/event4000&&sendevent/dev/intup/event444786979&&sendevent/dev/intup/event411720&&sendevent/dev/intup/event4000”

Androidtv.Download和Androidtv.upload

您可以使用Androidtv.Download服务将文件从您的Android TV / Fire TV设备下载到家庭助理实例。必威是什么必威体育存款

服务数据属性 选修的 描述
ENTITY_ID Android电视 /消防电视实体的名称。
Device_path Android TV / Fire TV设备上的Filepath。
local_path 您的家庭助理实例中的filepa必威体育存款th。必威是什么

同样,您可以使用androidtv.upload服务以将文件从家庭助理实例上传到Android TV / F必威是什么ire TV设备。

服务数据属性 选修的 描述
ENTITY_ID Android TV / Fire TV实体的名称。
Device_path Android TV / Fire TV设备上的Filepath。
local_path 您的家庭助理实例中的filepa必威体育存款th。必威是什么

自定义状态检测

Android TV集成是通过定期进行Android TV / Fire TV设备进行轮询并收集少数属性的。不幸的是,没有标准API来确定所有应用程序遵循的设备状态。相反,后端AndroidTV软件包使用其收集的三个属性来确定状态:audio_state,,,,Media_session_state, 和wake_lock_size。确定状态的正确逻辑取决于当前应用程序,而后端AndroidTV软件包实现了少数应用程序的特定应用程序检测逻辑。当然,为每个应用程序中的每个应用程序实现自定义逻辑是不可行的AndroidTV包裹。此外,正确的状态检测逻辑可能会在设备和设备配置之间有所不同。

解决这个问题的解决方案是state_detection_rules配置参数,该参数允许您提供自己的规则以进行状态检测。键是应用程序ID,值是按顺序评估的规则列表。有效规则是:

  • '支持',,,,“玩”,,,,“暂停”,,,,'闲置的', 或者'离开'
    • 如果这不是地图,那么当此应用是当前应用时,将始终报告此状态
    • 如果这是一张地图,则其条目将是将要检查的条件。如果所有条件都是正确的,则将报告该状态。有效条件与3个属性有关(请参见上面的示例配置):
      1. 'Media_session_state'
      2. 'audio_state'
      3. 'wake_lock_size'
  • 'Media_session_state'=尝试使用Media_session_state确定状态的财产
  • 'audio_state'=尝试使用audio_state确定状态的财产

为了确定这些规则应该是什么,您可以使用androidtv.adb_command用命令服务get_properties,如androidtv.adb_command部分。