Merge "Fix offline playback using widevine sample player" into nyc-dev am: 971d94e

am: a118a8c

* commit 'a118a8c541a22ef06e357b45e6225e73327ee9a1':
  Fix offline playback using widevine sample player

Change-Id: Ib4aa1c75358ee4d4e1efcab3a51ca02ba362c9c0
This commit is contained in:
Jeff Tinker
2016-04-04 21:43:37 +00:00
committed by android-build-merger
2 changed files with 15 additions and 14 deletions

View File

@@ -5,6 +5,8 @@ LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_DEX_PREOPT := false
LOCAL_PACKAGE_NAME := WidevineSamplePlayer LOCAL_PACKAGE_NAME := WidevineSamplePlayer
LOCAL_JAVA_LIBRARIES := org.apache.http.legacy LOCAL_JAVA_LIBRARIES := org.apache.http.legacy

View File

@@ -4,15 +4,12 @@
package com.widevine.demo; package com.widevine.demo;
import java.io.FileDescriptor; import java.io.File;
import java.io.FileInputStream;
import java.util.EventListener; import java.util.EventListener;
import java.util.Set; import java.util.Set;
import android.util.Log;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.drm.DrmErrorEvent; import android.drm.DrmErrorEvent;
import android.drm.DrmEvent; import android.drm.DrmEvent;
import android.drm.DrmInfo; import android.drm.DrmInfo;
@@ -20,6 +17,8 @@ import android.drm.DrmInfoEvent;
import android.drm.DrmInfoRequest; import android.drm.DrmInfoRequest;
import android.drm.DrmManagerClient; import android.drm.DrmManagerClient;
import android.drm.DrmStore; import android.drm.DrmStore;
import android.os.ParcelFileDescriptor;
import android.util.Log;
public class WidevineDrm { public class WidevineDrm {
@@ -133,12 +132,12 @@ public class WidevineDrm {
return rightsAcquisitionInfo; return rightsAcquisitionInfo;
} }
public DrmInfoRequest getDrmInfoRequest(String assetUri, FileDescriptor fd) { public DrmInfoRequest getDrmInfoRequest(String assetUri, ParcelFileDescriptor pfd) {
DrmInfoRequest rightsAcquisitionInfo = getDrmInfoRequest(assetUri); DrmInfoRequest rightsAcquisitionInfo = getDrmInfoRequest(assetUri);
if (fd.valid()) { if (pfd.getFileDescriptor().valid()) {
rightsAcquisitionInfo.put("FileDescriptorKey", fd.toString()); rightsAcquisitionInfo.put("FileDescriptorKey", Integer.toString(pfd.getFd()));
} }
return rightsAcquisitionInfo; return rightsAcquisitionInfo;
@@ -147,11 +146,11 @@ public class WidevineDrm {
public boolean isProvisionedDevice() { public boolean isProvisionedDevice() {
if (mWVDrmInfoRequestStatusKey == DEVICE_IS_PROVISIONED) if (mWVDrmInfoRequestStatusKey == DEVICE_IS_PROVISIONED)
logMessage("Device is provisioined\n"); logMessage("Device is provisioned\n");
else if (mWVDrmInfoRequestStatusKey == DEVICE_IS_PROVISIONED_SD_ONLY) else if (mWVDrmInfoRequestStatusKey == DEVICE_IS_PROVISIONED_SD_ONLY)
logMessage("Device is provisioined SD only\n"); logMessage("Device is provisioned SD only\n");
else if (mWVDrmInfoRequestStatusKey == DEVICE_IS_NOT_PROVISIONED) else if (mWVDrmInfoRequestStatusKey == DEVICE_IS_NOT_PROVISIONED)
logMessage("Device is not provisioined\n"); logMessage("Device is not provisioned\n");
else else
logMessage("Invalid provisioned status=" + mWVDrmInfoRequestStatusKey +"\n"); logMessage("Invalid provisioned status=" + mWVDrmInfoRequestStatusKey +"\n");
@@ -183,10 +182,10 @@ public class WidevineDrm {
int rights = 0; int rights = 0;
if (assetUri.startsWith("/sdcard")) { if (assetUri.startsWith("/sdcard")) {
try { try {
FileInputStream fis = new FileInputStream(assetUri); int mode = ParcelFileDescriptor.parseMode("r");
FileDescriptor fd = fis.getFD(); ParcelFileDescriptor pfd = ParcelFileDescriptor.open(new File(assetUri), mode);
rights = mDrmManager.acquireRights(getDrmInfoRequest(assetUri, fd)); rights = mDrmManager.acquireRights(getDrmInfoRequest(assetUri, pfd));
fis.close(); pfd.close();
} }
catch (java.io.IOException e) { catch (java.io.IOException e) {
logMessage("Unable to acquire rights for '" + assetUri + ": File I/O error'\n"); logMessage("Unable to acquire rights for '" + assetUri + ": File I/O error'\n");