我的目标是从配备Pulse-Eight USB加密狗的Android机箱上运行的标准(即非系统)应用程序发送HDMI CEC命令.
按照这些说明,我成功地设法为Android 编译libcec并在框中以root身份执行它,使用以下命令:
echo <my-cec-command> | cec-client -s /dev/ttyACM0
Run Code Online (Sandbox Code Playgroud)
/dev/ttyACM0插入加密狗时系统在哪里创建设备文件.
但是,此文件的权限会阻止该命令由非root用户执行(因此无法从我的Android应用程序执行).
另一方面,应用程序实际上可以通过Android SDK 的USB Host API访问USB加密狗(前提是用户授予权限),甚至可以用UsbSerial库封装到USB串行控制器中.
但是我没有看到任何方法在Android的USB Host API和libcec/cec-client提供的连接之间架起桥梁.你有什么想法或建议吗?
我一直面临着在这个安卓加密狗上访问HDMI CEC的问题.
我正试图打开电视并改变电视的输入源,但我无法做到.
Android API方法
我正在运行一个系统应用程序,我已经解决了
<uses-permission android:name="android.permission.HDMI_CEC" />
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml上.
我通过反射访问HDMI服务,因为我无法直接访问它,即使是系统应用程序.
public class HdmiHelper {
public HdmiHelper(Context context) {
init(context);
}
public void init(Context context) {
try {
//Interface Callback Proxy
Class<?> hotplugEventListenerClass = Class.forName("android.hardware.hdmi.HdmiControlManager$HotplugEventListener");
Class<?> vendorCommandListenerClass = Class.forName("android.hardware.hdmi.HdmiControlManager$VendorCommandListener");
Class<?> oneTouchPlayCallbackClass = Class.forName("android.hardware.hdmi.HdmiPlaybackClient$OneTouchPlayCallback");
Class<?> displayStatusCallbackClass = Class.forName("android.hardware.hdmi.HdmiPlaybackClient$DisplayStatusCallback");
Object interfaceOneTouchPlaybackCallback = Proxy.newProxyInstance(oneTouchPlayCallbackClass.getClassLoader(),
new Class<?>[]{ oneTouchPlayCallbackClass } , new callbackProxyListener() );
Object interfaceHotplugEventCallback = Proxy.newProxyInstance(hotplugEventListenerClass.getClassLoader(),
new Class<?>[]{ hotplugEventListenerClass } , new callbackProxyListener() );
Object interfaceDisplayStatusCallbackClass = Proxy.newProxyInstance(displayStatusCallbackClass.getClassLoader(),
new Class<?>[]{ displayStatusCallbackClass …Run Code Online (Sandbox Code Playgroud) 我正在构建一个 Android 媒体播放器应用程序,打算用于在通过 HDMI 电缆连接时在电视上播放媒体(视频、图片等)。
我想让媒体播放器应用程序在电视电源状态关闭时暂停,并希望在电视打开时播放。
当我的 Android 设备通过 HDMI 连接到电视时,如何在 Android 应用程序中检测电视的电源状态?
电视和 Android 设备均支持 HDMI-CEC。该设备是 ODROID C2。我在 KODI Android 应用程序上看到了此功能,该应用程序具有在 HDMI-CEC 状态关闭时暂停视频的功能,我也希望在我的应用程序中实现此功能。
任何帮助表示赞赏。提前致谢!
编辑:下面的进展
我尝试从此文件中读取 HDMI 连接的状态/sys/devices/virtual/switch/hdmi/state。int 1但是,无论所连接的屏幕/电视的电源状态是打开还是关闭,该文件都会保留。
第二次进度更新
我还在研究这个。不会放弃,一旦完成,我一定会在这里发布答案。