我目前正在使用Dash/Widevine数字版权管理切换到ExoPlayer。通过测试,我发现有很高比例的设备没有启用HDCP保护。由于合同协议,这是一个问题。在允许播放之前,我必须检测到这一点并将其记录下来。
我从应用程序DRM Info中获得了灵感,这甚至是一种可能性

我的第一个想法是使用DrmManagerClient
我放弃了它,因为我没有得到结果,并尝试使用MediaDrm
val mediaDrm = MediaDrm(WIDEVINE_UUID)
val vendor = mediaDrm.getPropertyString(MediaDrm.PROPERTY_VENDOR)
val version = mediaDrm.getPropertyString(MediaDrm.PROPERTY_VERSION)
val description = mediaDrm.getPropertyString(MediaDrm.PROPERTY_DESCRIPTION)
val algorithms = mediaDrm.getPropertyString(MediaDrm.PROPERTY_ALGORITHMS)
var hdcp: String? = null
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
hdcp = mediaDrm.connectedHdcpLevel.toString()
}
Log.i("WideVine", "$vendor $version $description $algorithms $hdcp")这是可行的!令人惊讶的问题解决了!
正如你所看到的,...Except只能在Pie和up上工作。这是不可能的。DrmInfo可以在我尝试过的每一个安卓版本上运行。我只是不知道如何使用DrmManagerClient,而且这些文档几乎是不存在的。
任何信息都将受到重视,谢谢。
发布于 2019-09-12 12:17:31
好的,在经历了一整天之后,我开始认为这是不可能的。我的最大努力都失败了,有一篇StackOverflow帖子甚至与这个话题有一点关系,但它没有起作用。
val algorithms = mediaDrm.getPropertyString("maxHdcpLevel")但是正如您在这里看到的那样,这不会通过编译器,并且需要一个MediaDrm.Property*

val stringProperties = arrayOf(
MediaDrm.PROPERTY_VENDOR,
MediaDrm.PROPERTY_VERSION,
MediaDrm.PROPERTY_DESCRIPTION,
MediaDrm.PROPERTY_ALGORITHMS,
"maxHdcpLevel")
val widevinePropertiesMap = mutableMapOf<String, String>()
for (prop in stringProperties) {
widevinePropertiesMap[prop] = mediaDrm.getPropertyString(prop)
Log.i(prop, mediaDrm.getPropertyString(prop))
}
Log.i("maxHdcpLevel:", "${widevinePropertiesMap["maxHdcpLevel"]}")或者,如果你只想得到一样东西,你可以...
@SupressLint("WrongConstant")这行得通!
我真的不确定为什么你可以用这种方式利用这个方法,但是,它已经完成了工作!
以下是我们可以获得的一些附加属性:
val securityLevel = mediaDrm.getPropertyString("securityLevel")
val systemId = mediaDrm.getPropertyString("systemId")
val hdcpLevel = mediaDrm.getPropertyString("hdcpLevel")
val maxHdcpLevel = mediaDrm.getPropertyString("maxHdcpLevel")
val usageReportingSupport = mediaDrm.getPropertyString("usageReportingSupport")
val maxNumberOfSessions = mediaDrm.getPropertyString("maxNumberOfSessions")
val numberOfOpenSessions = mediaDrm.getPropertyString("numberOfOpenSessions")https://stackoverflow.com/questions/57896720
复制相似问题