Keep local file open for DrmManagerService::acquireDrmInfo().
Bug: 7208979 Change-Id: I1b7798929f55b956e43bb9ed1a0f41dec9342be4
This commit is contained in:
@@ -4,10 +4,9 @@
|
|||||||
|
|
||||||
package com.widevine.demo;
|
package com.widevine.demo;
|
||||||
|
|
||||||
import java.util.EventListener;
|
import java.io.FileDescriptor;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
import java.util.EventListener;
|
||||||
//import java.util.HashMap;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
@@ -122,20 +121,23 @@ public class WidevineDrm {
|
|||||||
rightsAcquisitionInfo = new DrmInfoRequest(DrmInfoRequest.TYPE_RIGHTS_ACQUISITION_INFO,
|
rightsAcquisitionInfo = new DrmInfoRequest(DrmInfoRequest.TYPE_RIGHTS_ACQUISITION_INFO,
|
||||||
Settings.WIDEVINE_MIME_TYPE);
|
Settings.WIDEVINE_MIME_TYPE);
|
||||||
|
|
||||||
if (assetUri.startsWith("/sdcard")) {
|
|
||||||
try {
|
|
||||||
FileInputStream fis = new FileInputStream(assetUri);
|
|
||||||
rightsAcquisitionInfo.put("FileDescriptorKey", fis.getFD().toString());
|
|
||||||
}
|
|
||||||
catch (java.io.IOException e) {
|
|
||||||
logMessage("Unable to get fd for '" + assetUri + "'\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rightsAcquisitionInfo.put("WVDRMServerKey", Settings.DRM_SERVER_URI);
|
rightsAcquisitionInfo.put("WVDRMServerKey", Settings.DRM_SERVER_URI);
|
||||||
rightsAcquisitionInfo.put("WVAssetURIKey", assetUri);
|
rightsAcquisitionInfo.put("WVAssetURIKey", assetUri);
|
||||||
rightsAcquisitionInfo.put("WVDeviceIDKey", Settings.DEVICE_ID);
|
rightsAcquisitionInfo.put("WVDeviceIDKey", Settings.DEVICE_ID);
|
||||||
rightsAcquisitionInfo.put("WVPortalKey", Settings.PORTAL_NAME);
|
rightsAcquisitionInfo.put("WVPortalKey", Settings.PORTAL_NAME);
|
||||||
rightsAcquisitionInfo.put("WVCAUserDataKey", Settings.USER_DATA);
|
rightsAcquisitionInfo.put("WVCAUserDataKey", Settings.USER_DATA);
|
||||||
|
|
||||||
|
return rightsAcquisitionInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DrmInfoRequest getDrmInfoRequest(String assetUri, FileDescriptor fd) {
|
||||||
|
|
||||||
|
DrmInfoRequest rightsAcquisitionInfo = getDrmInfoRequest(assetUri);
|
||||||
|
|
||||||
|
if (fd.valid()) {
|
||||||
|
rightsAcquisitionInfo.put("FileDescriptorKey", fd.toString());
|
||||||
|
}
|
||||||
|
|
||||||
return rightsAcquisitionInfo;
|
return rightsAcquisitionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,7 +177,21 @@ public class WidevineDrm {
|
|||||||
|
|
||||||
public int acquireRights(String assetUri) {
|
public int acquireRights(String assetUri) {
|
||||||
|
|
||||||
int rights = mDrmManager.acquireRights(getDrmInfoRequest(assetUri));
|
int rights = 0;
|
||||||
|
if (assetUri.startsWith("/sdcard")) {
|
||||||
|
try {
|
||||||
|
FileInputStream fis = new FileInputStream(assetUri);
|
||||||
|
FileDescriptor fd = fis.getFD();
|
||||||
|
rights = mDrmManager.acquireRights(getDrmInfoRequest(assetUri, fd));
|
||||||
|
fis.close();
|
||||||
|
}
|
||||||
|
catch (java.io.IOException e) {
|
||||||
|
logMessage("Unable to acquire rights for '" + assetUri + ": File I/O error'\n");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rights = mDrmManager.acquireRights(getDrmInfoRequest(assetUri));
|
||||||
|
}
|
||||||
|
|
||||||
logMessage("acquireRights = " + rights + "\n");
|
logMessage("acquireRights = " + rights + "\n");
|
||||||
|
|
||||||
return rights;
|
return rights;
|
||||||
|
|||||||
Reference in New Issue
Block a user