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:
@@ -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
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user