问题标签 [hdmi-cec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 在 Android 应用中使用 libCEC + USB 加密狗
我的目标是从一个标准(即非系统)应用程序发送 HDMI CEC 命令,该应用程序在配备 Pulse-Eight 的 USB 加密狗的 Android 盒子上运行。
按照这些说明,我成功地为 Android 编译了 libcec,并使用以下命令在盒子上以 root 身份执行它:
/dev/ttyACM0
插入加密狗时系统创建的设备文件在哪里。
但是,此文件的权限会阻止该命令由非 root 用户执行(因此无法从我的 Android 应用程序执行)。
另一方面,该应用程序实际上可以通过 Android SDK 的USB 主机 API访问 USB 加密狗(前提是用户授予权限),甚至可以使用UsbSerial库将其包装到 USB 串行控制器中。
但是我看不到任何方法可以在 Android 的 USB Host API 和 libcec/cec-client 提供的连接之间建立桥梁。你有什么想法或建议吗?
android - 安卓上的 HDMI CEC
我一直面临在这个android 加密狗上访问 HDMI CEC 的问题。
我正在尝试打开电视并更改电视的输入源,但我无法做到。
Android API 方法
我正在运行一个系统应用程序并且我已经解决了
在 AndroidManifest.xml 上。
我通过反射访问 HDMI 服务,因为我无法直接访问它,即使是系统应用程序也是如此。
记录答案:
- 问题一:
我收到了真实:这意味着电视播放的是真实的。如果电视关闭,我收到错误消息。这似乎行得通。
不过,我希望每次更改电视状态时都会收到回调,但这并没有发生。任何的想法?
- 问题2:
继续 OneTouchPlayCallback 的日志:
查看类HdmiPlaybackClient.java如果一切顺利,答案将为 0(@param 结果是操作的结果。{@link HdmiControlManager#RESULT_SUCCESS。您可以在HdmiControlManager.java类中找到此变量}。相反,我收到 2我认为这是RESULT_SOURCE_NOT_AVAILABLE。
知道为什么吗?
- 问题 3
现在继续 DisplayStatusCallback 的日志:
根据这个回调的定义:
并查看我收到的 HdmiControlManager 2,这意味着:
这是一个奇怪的结果,因为事实并非如此。
- 继续记录日志以供您参考:
回答:
getActiveSource 为空
我还测试了这段调用 getTvClient() 方法的代码:
结果为空。
我还尝试了在CEC-O-MATIC 网站之后发送供应商命令的方法,但我无法成功。如果您对此有任何指示,请给我一些指示,我将对其进行测试。
LibCEC 方法:
由于这篇文章,我能够将 libcec 交叉编译到 android 。但是 libcec 总是回答我“控制器没有确认命令'PING'”。
我已将标志 -DHAVE_EXYNOS_API=1 和 -DHAVE_AOCEC_API=1 添加到 libcec。
系统信息
设备 /dev/cec 已解决:
我也可以在 /sys/class/cec 上找到它:
但是当我运行 cec-client 时,我收到了这个答案:
作为说明,我还有设备 /dev/input/event2 是只读的 cec_input:
我试图在 /dev/input/event2 上运行它,但显然它不起作用,因为它无法打开连接:
总之:
在这两种情况下,我都无法获得打开或更改电视输入源的命令。任何方向都会非常有帮助。提前致谢。
注意:我能够在同一台电视上使用 libcec 和 raspberry pi 完成它
android - 检测通过 HDMI 连接到 Android 设备的电视电源状态的变化
我正在构建一个 Android 媒体播放器应用程序,我打算在通过 HDMI 电缆连接时在电视上播放媒体(视频、图片等)。
我想让媒体播放器应用程序在电视电源状态关闭时暂停,并希望它在电视打开时播放。
当我的 Android 设备通过 HDMI 连接到电视时,如何在我的 Android 应用程序中检测电视的电源状态?
电视和安卓设备都支持 HDMI-CEC。有问题的设备是 ODROID C2。我已经在 KODI Android 应用程序上看到了这个功能,它具有在 HDMI-CEC 状态为 OFF 时暂停视频的功能,我也希望在我的应用程序中实现这个功能。
任何帮助表示赞赏。提前致谢!
编辑:下面的进展
我尝试从这个文件中读取 HDMI 连接的状态/sys/devices/virtual/switch/hdmi/state
。int
1
但是,无论连接的屏幕/电视的电源状态是打开还是关闭,此文件都将保留。
第二次进度更新
我仍在努力。不会放弃,一旦我完成了,我一定会在这里发布答案。
android - 如何使用 sysfs 从 Amlogic 905x 板向电视发送 HDMI-CEC 命令
我想从 Amlogic 905x ARM 板(Android 6)发送原始 HDMI-CEC 命令(adb shell)来测试功能。该板已植根(经过测试,“adb root”有效)并连接到具有 CEC 功能的电视(已启用,也通过视频游戏控制台进行了测试)。
首先我想澄清核心功能是否内置,所以我猜如果正确的 CEC 命令被发送到正确的频道,我应该注意到电视机的任何类型的变化。
我想在较低的抽象级别上对其进行测试(我猜 sysfs 没问题,http://www.cec-o-matic.com/关于如何构建命令字符串非常简单)以避免系统库的复杂性从这一步开始。
我注意到有些人通过使用以下方法在打开电视时取得了积极成果:
它对我没有用。
我认为我可能为此目的分配了一个不同的类文件,我发现'/sys/class/amhdmitx/amhdmitx0' 有很多提供 IO 功能的端点/文件。
我通过使用以下方法从设备返回了连接到的电视机的详细信息(EDID - 扩展显示标识数据):
这意味着也必须有一种方法可以向电视发送命令,例如打开/关闭电视、更改信号源……
通过发送到调试文件来尝试,因为没有可用的 cmd 文件,如 '/sys/class/cec/cmd':
有谁知道我该怎么做才能测试发送程序(设备)->(电视)?
为什么使用“/sys/class/cec/cmd”时电视上没有活动?
哪个是用于将十六进制数据发送到电视的正确文件?
的结果
是
samsung-smart-tv - 三星电视 (anynet+) 使用 HDMI CEC 控制 Android 设备
我正在使用命令行来控制电视,如开机、关机、音量增大和音量减小。我可以使用以下命令打开和关闭电源。
和关机一样
但我无法控制音量。我们可以从以下网站(http://www.cec-o-matic.com)获取要发送的代码
音量加减命令
提高音量:os.writeBytes("echo 0x40 0x44 0x41" > /sys/class/cec/cmd" + "\n");
降低音量:os.writeBytes("echo 0x40 0x44 0x42" > /sys/class/cec/cmd" + "\n");
这些命令不起作用。任何有关此的参考或文档将不胜感激。
android - HDMI-CEC Android TV 关闭电视
我有一个 Android 电视盒,我想使用 HDMI-CEC 来打开和关闭我的电视,我正在使用 android shell 命令来打开电视,例如:'echo 0x40 0x04 > /sys/class/cec/cmd'它工作正常。
但是当我使用 'echo 0x40 0x36 > /sys/class/cec/cmd' 关闭电视并且它不起作用时,我需要知道我是否运行错误这个命令来关闭电视或者我是否必须做一些事情其他不同。
adb - HDMI-CEC 使用 adb 处理一些命令
我有连接 hdmi 和三星电视的 mecool 电视盒。当我使用 adb 发出待机命令时,我的电视进入待机状态,但是当我发出任何其他命令时,它无法工作。例如
此命令用于待机。
这些命令没有在屏幕或电视上显示任何内容。我正在从这个网站cec-o-matic获取有关命令的帮助
java - 通过 HDMI CEC 从 Android 应用程序控制电视
我正在尝试通过 Amlogic Android 盒子通过 CEC 控制(音量控制,也许还有开/关)三星电视。
Android 文档解释了它的理论,但没有要实现的实际代码,我看到用户通过 sys/class/cec/cmd 中的 cmd 命令进行通信,但我的 Amlogic 盒子中不存在这个文件夹。我相信我需要将 libcec(虽然不确定)安装到我的盒子中,但这似乎是非 Android 方式(我期待使用 HdmiControlManager 类,但它无法访问)。
电视肯定有 CEC (Anynet+)。
这个问题总结了从 Android 应用程序发送 HDMI CEC 命令的部分问题,但没有答案。
我的设备甚至不包含运行 CEC 命令的 sys/class/cec 文件夹,如下所示:Samsung TV (anynet+) control with Android Device using HDMI CEC
关于如何实现这一目标的任何想法?通过Android框架还是不通过它?
raspberry-pi - 为什么我的输入源在发送时没有改变通过 CEC 客户端发送消息?
问题/问题
当我使用 CEC-Client 发送活动源命令以将电视输入切换到特定源时,没有任何反应。我究竟做错了什么?
环境
我将运行 Raspbian 的 Raspberry Pi 4 插入 Vizio 电视。我已经安装了 cec-client(通过 cec-utils),并且我正在 Raspberry Pi 上的 Bash 中使用它运行命令。
这是我设置的 CEC 总线的扫描:
我试过的:
很多东西。
进一步来说:
tx 1f:82:10:00
tx 1f 82 10 00
- (一堆地址错误的东西)
- 例如
tx 4f:82:10:00
和tx 10:82:10:00
- 例如
sp 1.0.0.0
spl 4
- 阅读有关 CEC 上的活动源消息的 HDMI 规范
其他信息
我知道电视支持它,因为当我开始使用它的遥控器时,我尝试切换到的设备(Roku)使用 CEC 将输入切换到自身。在执行此操作时观看 CEC-Client,它会发送
4f:82:10:00
以将自己声明为活动源,这正是我尝试过的,除了将自己作为发起者(我也尝试过以防万一)。为了确保该
tx
命令正常工作,我使用它成功地将电视发送到待机状态。使用
as
将 Pi 设置为活动源可以正常工作,但相应的 tx 命令tx 1f:82:40:00
不执行任何操作(即使 CEC-Client 的输出使用完全相同的消息显示它)。我只列出了上面的 CEC-Client 命令,但我已经在 CEC-Client 的交互式提示中直接尝试了所有这些命令,并将其回显到 cec-client(即
echo "tx 1F:82:10:00" | cec-client RPI -s -d 1
)中。
我在哪里
任何帮助/反馈将不胜感激!我已经束手无策了,想不出其他我还没有尝试过的东西。
(也欢迎对我的问题提供任何反馈;我对在 StackExchange 网络上发帖还是很陌生)