2013-08-22 390 views
5

在Android Doc和Google上找不到任何明确的内容。如何检测Android设备上的HDMI端口是否启用了HDCP?

如果有API可以检测到这个问题,它是什么以及在HDMI输出上启用/禁用HDCP的API是什么?

如果没有API来检测这个,是否有设备可以用来检查HDMI端口上的HDCP标志?

在某些android设备(最值得注意的是三星设备)上,HDMI端口始终启用HDCP。 但其他制造商设备如何? Google认证设备上必须使用HDCP吗?如果不是强制性的,主要内容提供商的Android应用程序(来自Big cable company teleco)如何防止视频输出到非HDCP保护的HDMI端口?

+0

[这是一个相关的错误报告](https://code.google.com/p/android/issues/detail?id=52985),你可能会觉得有趣,它应该至少回答你的一些问题问题 –

+0

Thanks MH,这的确非常有趣,我对检测HDMI端口是否启用HDCP更感兴趣,即使无法启用/禁用HDCP,只要应用程序知道HDCP不是可以拒绝播放高清内容 –

+0

请注意,我不能仅仅检查硬件名称和型号,然后假设HDCP可用,这是行不通的,因为设备名称和型号可以很容易地在根设备上进行更改 –

回答

2
+0

感谢看起来像它与HDCP标志相关,但绝对没有例子如何分配一个安全的缓冲区,然后使用缓冲区输出视频帧。 –

+0

我相信你会分配一个[SurfaceView](http://developer.android.com/reference/android/view/SurfaceView.html),然后调用[setSecure](http://developer.android.com/reference/机器人/视图/ SurfaceView.html#setSecure(布尔值))。之后,使用[MediaPlayer](http://developer.android.com/reference/android/media/MediaPlayer.html),调用[setDisplay](http://developer.android.com/reference/android/media/ MediaPlayer.html#setDisplay(android.view.SurfaceHolder))(exampleSurfaceView.getHolder())。 –

+1

其实,是否有可能有一个特殊的android版本,返回标志为FLAG_SECURE,并且根本没有HDCP?特殊的android只是为了欺骗应用程序,认为HDCP是可用的,但事实上并非如此。 –

-1

如果它有一个HDMI端口HDCP会,因为它启用没有它就无法工作!

0

摩托罗拉的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以及...所以你可能想要观看这个空间。

1

这是一个较老的线程 - 但是因为我再次在这个东西上工作,我以为我会更新。

从API 17(Android 4.2+)开始,您可以从标准的Android SDK获得HDCP信息的体面代理。

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

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

相关问题