【发布时间】:2017-05-07 23:52:55
【问题描述】:
我正在制作一个应用程序,我必须在其中检查 Android 设备中是否存在 Google Widevine DRM。 如何以编程方式检查?
提前致谢
【问题讨论】:
标签: android android-tv drm widevine android-drm
我正在制作一个应用程序,我必须在其中检查 Android 设备中是否存在 Google Widevine DRM。 如何以编程方式检查?
提前致谢
【问题讨论】:
标签: android android-tv drm widevine android-drm
Android DRM 框架提供了一种方法来检查哪些 DRM 系统可用 -
String[] engines = mDrmManager.getAvailableDrmEngines()
返回的名称可能有点令人困惑,但如果您使用它,您应该会看到您要查找的内容。
值得注意的是,Widevine 有不同的级别,具体取决于 DRM 密钥的保护方式以及播放在硬件中是否完全安全。
Widevine 也有两种通用类型 - 旧设备上的 Widevine classic 和新设备上的 Widevine Modular。
您可以在此处查看有关如何确定 Widevine Classic 级别的一些详细信息:
【讨论】:
我通过探索 ExoPlayer 库找到了解决方案
private boolean isWideVineDRMAvailable()
{
return MediaDrm.isCryptoSchemeSupported(C.WIDEVINE_UUID);
}
C 是 ExoPlayer 库中可用的常量类。
【讨论】:
我们可以使用这种方法为任何安卓设备https://developer.android.com/reference/android/media/MediaDrm#getPropertyString(java.lang.String)获取特定的widevine安全级别
简码 sn-p 来说明文档。
val widevineKeyDrm = MediaDrm(C.WIDEVINE_UUID)
val securityLevel = widevineKeyDrm.getPropertyString()
附言。常量C.WIDEVINE_UUID 是从这里提取的https://github.com/donparapidos/ExoPlayer/blob/master/library/src/main/java/com/google/android/exoplayer2/C.java
【讨论】: