mirror of
https://github.com/samsonjs/media.git
synced 2026-06-28 05:29:33 +00:00
Deprecate DefaultDrmSessionManager factory methods and migrate main demo app
PiperOrigin-RevId: 272643202
This commit is contained in:
parent
737b5cd82d
commit
433526e034
3 changed files with 36 additions and 59 deletions
|
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.demo;
|
|||
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.MediaDrm;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Pair;
|
||||
|
|
@ -40,10 +41,10 @@ import com.google.android.exoplayer2.SimpleExoPlayer;
|
|||
import com.google.android.exoplayer2.demo.Sample.UriSample;
|
||||
import com.google.android.exoplayer2.drm.DefaultDrmSessionManager;
|
||||
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
||||
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
||||
import com.google.android.exoplayer2.drm.ExoMediaCrypto;
|
||||
import com.google.android.exoplayer2.drm.FrameworkMediaDrm;
|
||||
import com.google.android.exoplayer2.drm.HttpMediaDrmCallback;
|
||||
import com.google.android.exoplayer2.drm.UnsupportedDrmException;
|
||||
import com.google.android.exoplayer2.drm.MediaDrmCallback;
|
||||
import com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.DecoderInitializationException;
|
||||
import com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException;
|
||||
import com.google.android.exoplayer2.offline.DownloadHelper;
|
||||
|
|
@ -78,8 +79,6 @@ import java.lang.reflect.Constructor;
|
|||
import java.net.CookieHandler;
|
||||
import java.net.CookieManager;
|
||||
import java.net.CookiePolicy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
/** An activity that plays media using {@link SimpleExoPlayer}. */
|
||||
public class PlayerActivity extends AppCompatActivity
|
||||
|
|
@ -131,8 +130,6 @@ public class PlayerActivity extends AppCompatActivity
|
|||
DEFAULT_COOKIE_MANAGER.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER);
|
||||
}
|
||||
|
||||
private final ArrayList<FrameworkMediaDrm> mediaDrms;
|
||||
|
||||
private PlayerView playerView;
|
||||
private LinearLayout debugRootView;
|
||||
private Button selectTracksButton;
|
||||
|
|
@ -156,10 +153,6 @@ public class PlayerActivity extends AppCompatActivity
|
|||
private AdsLoader adsLoader;
|
||||
private Uri loadedAdTagUri;
|
||||
|
||||
public PlayerActivity() {
|
||||
mediaDrms = new ArrayList<>();
|
||||
}
|
||||
|
||||
// Activity lifecycle
|
||||
|
||||
@Override
|
||||
|
|
@ -342,7 +335,6 @@ public class PlayerActivity extends AppCompatActivity
|
|||
if (player == null) {
|
||||
Intent intent = getIntent();
|
||||
|
||||
releaseMediaDrms();
|
||||
mediaSource = createTopLevelMediaSource(intent);
|
||||
if (mediaSource == null) {
|
||||
return;
|
||||
|
|
@ -452,38 +444,29 @@ public class PlayerActivity extends AppCompatActivity
|
|||
}
|
||||
|
||||
private MediaSource createLeafMediaSource(UriSample parameters) {
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null;
|
||||
Sample.DrmInfo drmInfo = parameters.drmInfo;
|
||||
if (drmInfo != null) {
|
||||
int errorStringId = R.string.error_drm_unknown;
|
||||
if (Util.SDK_INT < 18) {
|
||||
errorStringId = R.string.error_drm_not_supported;
|
||||
} else {
|
||||
try {
|
||||
if (drmInfo.drmScheme == null) {
|
||||
errorStringId = R.string.error_drm_unsupported_scheme;
|
||||
} else {
|
||||
drmSessionManager =
|
||||
buildDrmSessionManagerV18(
|
||||
drmInfo.drmScheme,
|
||||
drmInfo.drmLicenseUrl,
|
||||
drmInfo.drmKeyRequestProperties,
|
||||
drmInfo.drmMultiSession);
|
||||
}
|
||||
} catch (UnsupportedDrmException e) {
|
||||
errorStringId =
|
||||
e.reason == UnsupportedDrmException.REASON_UNSUPPORTED_SCHEME
|
||||
? R.string.error_drm_unsupported_scheme
|
||||
: R.string.error_drm_unknown;
|
||||
}
|
||||
}
|
||||
if (drmSessionManager == null) {
|
||||
showToast(errorStringId);
|
||||
finish();
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
int errorStringId = R.string.error_drm_unknown;
|
||||
DrmSessionManager<ExoMediaCrypto> drmSessionManager = null;
|
||||
if (drmInfo == null) {
|
||||
drmSessionManager = DrmSessionManager.getDummyDrmSessionManager();
|
||||
} else if (Util.SDK_INT < 18) {
|
||||
errorStringId = R.string.error_drm_unsupported_before_api_18;
|
||||
} else if (!MediaDrm.isCryptoSchemeSupported(drmInfo.drmScheme)) {
|
||||
errorStringId = R.string.error_drm_unsupported_scheme;
|
||||
} else {
|
||||
MediaDrmCallback mediaDrmCallback =
|
||||
createMediaDrmCallback(drmInfo.drmLicenseUrl, drmInfo.drmKeyRequestProperties);
|
||||
drmSessionManager =
|
||||
new DefaultDrmSessionManager.Builder()
|
||||
.setUuidAndExoMediaDrmProvider(drmInfo.drmScheme, FrameworkMediaDrm.DEFAULT_PROVIDER)
|
||||
.setMultiSession(drmInfo.drmMultiSession)
|
||||
.build(mediaDrmCallback);
|
||||
}
|
||||
|
||||
if (drmSessionManager == null) {
|
||||
showToast(errorStringId);
|
||||
finish();
|
||||
return null;
|
||||
}
|
||||
|
||||
DownloadRequest downloadRequest =
|
||||
|
|
@ -497,7 +480,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
}
|
||||
|
||||
private MediaSource createLeafMediaSource(
|
||||
Uri uri, String extension, DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||
Uri uri, String extension, DrmSessionManager<ExoMediaCrypto> drmSessionManager) {
|
||||
@ContentType int type = Util.inferContentType(uri, extension);
|
||||
switch (type) {
|
||||
case C.TYPE_DASH:
|
||||
|
|
@ -521,9 +504,8 @@ public class PlayerActivity extends AppCompatActivity
|
|||
}
|
||||
}
|
||||
|
||||
private DefaultDrmSessionManager<FrameworkMediaCrypto> buildDrmSessionManagerV18(
|
||||
UUID uuid, String licenseUrl, String[] keyRequestPropertiesArray, boolean multiSession)
|
||||
throws UnsupportedDrmException {
|
||||
private HttpMediaDrmCallback createMediaDrmCallback(
|
||||
String licenseUrl, String[] keyRequestPropertiesArray) {
|
||||
HttpDataSource.Factory licenseDataSourceFactory =
|
||||
((DemoApplication) getApplication()).buildHttpDataSourceFactory();
|
||||
HttpMediaDrmCallback drmCallback =
|
||||
|
|
@ -534,10 +516,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
keyRequestPropertiesArray[i + 1]);
|
||||
}
|
||||
}
|
||||
|
||||
FrameworkMediaDrm mediaDrm = FrameworkMediaDrm.newInstance(uuid);
|
||||
mediaDrms.add(mediaDrm);
|
||||
return new DefaultDrmSessionManager<>(uuid, mediaDrm, drmCallback, null, multiSession);
|
||||
return drmCallback;
|
||||
}
|
||||
|
||||
private void releasePlayer() {
|
||||
|
|
@ -554,14 +533,6 @@ public class PlayerActivity extends AppCompatActivity
|
|||
if (adsLoader != null) {
|
||||
adsLoader.setPlayer(null);
|
||||
}
|
||||
releaseMediaDrms();
|
||||
}
|
||||
|
||||
private void releaseMediaDrms() {
|
||||
for (FrameworkMediaDrm mediaDrm : mediaDrms) {
|
||||
mediaDrm.release();
|
||||
}
|
||||
mediaDrms.clear();
|
||||
}
|
||||
|
||||
private void releaseAdsLoader() {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<string name="error_unrecognized_stereo_mode">Unrecognized stereo mode</string>
|
||||
|
||||
<string name="error_drm_not_supported">Protected content not supported on API levels below 18</string>
|
||||
<string name="error_drm_unsupported_before_api_18">Protected content not supported on API levels below 18</string>
|
||||
|
||||
<string name="error_drm_unsupported_scheme">This device does not support the required DRM scheme</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
|||
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
|
||||
|
||||
/**
|
||||
* Creates a builder with default values.
|
||||
* Creates a builder with default values. The default values are:
|
||||
*
|
||||
* <ul>
|
||||
* <li>{@link #setKeyRequestParameters keyRequestParameters}: An empty map.
|
||||
|
|
@ -258,7 +258,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
|||
* @param callback Performs key and provisioning requests.
|
||||
* @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument
|
||||
* to {@link ExoMediaDrm#getKeyRequest(byte[], List, int, HashMap)}. May be null.
|
||||
* @deprecated Use {@link Builder} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public DefaultDrmSessionManager(
|
||||
UUID uuid,
|
||||
ExoMediaDrm<T> exoMediaDrm,
|
||||
|
|
@ -281,7 +283,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
|||
* to {@link ExoMediaDrm#getKeyRequest(byte[], List, int, HashMap)}. May be null.
|
||||
* @param multiSession A boolean that specify whether multiple key session support is enabled.
|
||||
* Default is false.
|
||||
* @deprecated Use {@link Builder} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public DefaultDrmSessionManager(
|
||||
UUID uuid,
|
||||
ExoMediaDrm<T> exoMediaDrm,
|
||||
|
|
@ -307,7 +311,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
|||
* Default is false.
|
||||
* @param initialDrmRequestRetryCount The number of times to retry for initial provisioning and
|
||||
* key request before reporting error.
|
||||
* @deprecated Use {@link Builder} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public DefaultDrmSessionManager(
|
||||
UUID uuid,
|
||||
ExoMediaDrm<T> exoMediaDrm,
|
||||
|
|
|
|||
Loading…
Reference in a new issue