我正在开发一个旨在播放Widevine受保护内容的应用程序。我正在尝试在Genymotion虚拟Android设备上运行应用程序。但是当我这样做时,应用程序无法获取DRM信息。因此,下面的代码返回null并且应用程序不会继续进行。
DrmInfoRequest request = new DrmInfoRequest(DrmInfoRequest.TYPE_REGISTRATION_INFO,
Settings.WIDEVINE_MIME_TYPE);
request.put("WVPortalKey", portal);
DrmInfo response = mDrmManager.acquireDrmInfo(request);
我想知道genymotion虚拟设备是否是问题的原因。如果是这样,是否可以配置genymotion使其与DRM一起使用?任何帮助将受到高度赞赏。
答案 0 :(得分:2)
private final static long DEVICE_IS_PROVISIONED = 0;
private final static long DEVICE_IS_NOT_PROVISIONED = 1;
private final static long DEVICE_IS_PROVISIONED_SD_ONLY = 2;
private final static String WIDEVINE_MIME_TYPE = "video/wvm";
public static boolean isDeviceWidevineDRMProvisioned(Context context)
{
boolean isDrmAvailable = true;
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion < android.os.Build.VERSION_CODES.KITKAT)
{
//As Media DRM Package is available only after KITKAT(API Level 19)
isDrmAvailable = false;
} else
{
DrmManagerClient drmManagerClient = new DrmManagerClient(context);
DrmInfoRequest drmInfoRequest = new DrmInfoRequest(DrmInfoRequest.TYPE_REGISTRATION_INFO, WIDEVINE_MIME_TYPE);
drmInfoRequest.put("WVPortalKey", "key provided for drm in widevine portal");
DrmInfo drmInfo = drmManagerClient.acquireDrmInfo(drmInfoRequest);
if (drmInfo != null)
{
String kWVDrmInfoRequestStatusKey = (String) drmInfo.get("WVDrmInfoRequestStatusKey");
String drmPath = (String) drmInfo.get("drm_path");
if ((kWVDrmInfoRequestStatusKey != null && Integer.parseInt(kWVDrmInfoRequestStatusKey) == DEVICE_IS_NOT_PROVISIONED) || (drmPath != null && drmPath.length() == 0))
{
//not supported
isDrmAvailable = false;
}
}
}
return isDrmAvailable;
}
答案 1 :(得分:1)
DRM是一项硬件功能。它无法在模拟器中获得。
答案 2 :(得分:0)
您可以在经理上注册错误监听器,以获得正在发生的事情的线索:
manager.setOnErrorListener(new DrmManagerClient.OnErrorListener() {
public void onError(DrmManagerClient drmManagerClient, DrmErrorEvent event) {
Log.i(TAG, "Error Type : " + event.getType());
}
});
答案 3 :(得分:0)
上面的方法对我不起作用,acquireDrmInfo(request)总是返回null。在研究Exo-player DashTestRunner之后。我使用以下方法来获取Widevine DRM信息。
reader.Read()