documentation for the android DRM package说“DRM API的常见用途包括......确定设备上安装了哪些DRM插件(代理)”。
我可以在DRM包中找到的唯一方法DrmManagerClient.getAvailableDrmEngines()。此方法确实有效,因为它返回一个包含DRM代理名称的字符串数组。这就是上面关于确定安装哪些插件的说法是什么?
但是,该列表(至少在某些情况下)与android.Media
包中的新方法MediaDrm.isCryptoSchemeSupported()的结果完全相矛盾。
示例:
getAvailableDrmEngines()
:
isCryptoSchemeSupported()
:
getAvailableDrmEngines()
:
isCryptoSchemeSupported()
:
一位在Google Play商店中拥有非常受欢迎的DRM相关工具的开发人员告诉我,他会认为DrmManagerClient
方法已经过时/不常用。
在这种情况下,在可能的情况下使用MediaDrm.isCryptoSchemeSupported()
是有意义的,即API级别18或更高级别。但是MediaDrm没有提供获得支持的加密方案/代理/插件列表的方法;你只需要尝试你感兴趣的那些。你可以尝试将the DASHIF list中已知的加密方案UUID放入你的代码中,并尝试所有这些。但这份名单可能会在过去几年中发生变化。
这让我们回到原来的问题:
如何获得设备上安装的(准确)DRM插件列表?
为澄清主要问题而提出相关问题:
DrmManagerClient.getAvailableDrmEngines()
还是其他什么?DrmManagerClient.getAvailableDrmEngines()
,但后者在较新的设备上给出了错误的结果,为什么它不被弃用?它是制造商实施Android的一个普遍存在的错误吗?
DrmManagerClient.getAvailableDrmEngines()
不可靠,除了尝试你能找到的所有UUID之外,还有另一种获取列表的方法吗?