如何检测安卓设备上的HDMI端口是否启用了HDCP?

5
无法在Android文档和Google上找到明确的内容。
如果有API可以检测到这一点,那么它是什么,以及启用/禁用HDMI输出上的HDCP的API是什么?
如果没有API可以检测到这一点,是否有设备可用于检查HDMI端口上的HDCP标志?
在某些Android设备上(特别是三星设备),HDMI端口始终启用HDCP。但其他制造商的设备如何呢? Google认证设备上是否强制执行HDCP?如果不是强制执行的,则主要内容提供商的Android应用程序(来自大型有线电视公司电信公司)如何防止将视频输出到未受HDCP保护的HDMI端口?

这里有一个相关的错误报告链接(https://code.google.com/p/android/issues/detail?id=52985),你可能会觉得很有趣。它应该能回答你至少一些问题。 - MH.
谢谢 MH。这确实非常有趣。我更感兴趣的是检测 HDMI 端口是否启用了 HDCP。即使没有启用/禁用 HDCP 的方法,只要应用程序知道 HDCP 不可用,它就可以拒绝播放高清内容。 - Yi Wang
请注意,我不能仅检查硬件名称和型号,然后假定HDCP可用。这样做行不通,因为设备名称和型号可以在根设备上轻松更改。 - Yi Wang
4个回答

2

谢谢,看起来与HDCP标志有关,但绝对没有分配安全缓冲区并使用该缓冲区输出视频帧的示例。 - Yi Wang
我相信你会分配一个SurfaceView,然后调用setSecure。之后,使用MediaPlayer,调用setDisplay(exampleSurfaceView.getHolder())。 - Marcos Zolnowski
1
其实,是否可能有一个特殊的 Android 版本,对标志 FLAG_SECURE 返回 true,并且根本没有 HDCP?这个特殊的 Android 存在只是为了欺骗应用程序认为 HDCP 可用,但实际上却不可用。 - Yi Wang

1

这是一个较旧的帖子 - 但由于我再次处理此内容,所以我想更新一下。

从API 17(Android 4.2+)开始,您可以从标准Android SDK中获取HDCP信息的良好代理。

如果您想确保显示器“安全”,您可以在应用程序Surface上调用setSecure(true)。然后,为了保险起见,您可以枚举可用的显示器并验证每个显示器是否设置了FLAG_SECURE。这将阻止DDMS,并至少提示显示驱动程序应该打开HDCP输出。但无法保证,因此您的效果可能会有所不同。

进一步说明 - Alex上面提到的路径在新设备(Android 5.1+)上可能已更改。但由于这取决于OEM,因此不同设备可能会有所不同。 :-(


0

Motorola 一个API:http://web.archive.org/web/20120213100531/http://developer.motorola.com/docstools/library/motorola-hdmi-status-api/

我们仍在使用它来支持旧设备。我也读到有人通过adb在新设备上尝试成功,如果有人知道它是否仍适用于较新的摩托罗拉设备,请分享。

还有,虽然这不是你要问的内容,但我们正在使用它来获取HDMI状态(/sys/devices/virtual/switch/hdmi/state),希望它们在未来可以扩展支持HDCP...所以你也许需要关注一下这个领域的发展。


-2
往往情况下,如果它有HDMI端口,HDCP将会启用,否则它将无法正常工作!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接