Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
433526e0
authored
Oct 03, 2019
by
aquilescanta
Committed by
Oliver Woodman
Oct 04, 2019
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Deprecate DefaultDrmSessionManager factory methods and migrate main demo app
PiperOrigin-RevId: 272643202
parent
737b5cd8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
59 deletions
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
demos/main/src/main/res/values/strings.xml
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
View file @
433526e0
...
...
@@ -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.
Framework
MediaCrypto
;
import
com.google.android.exoplayer2.drm.
Exo
MediaCrypto
;
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
<
Framework
MediaCrypto
>
drmSessionManager
)
{
Uri
uri
,
String
extension
,
DrmSessionManager
<
Exo
MediaCrypto
>
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
()
{
...
...
demos/main/src/main/res/values/strings.xml
View file @
433526e0
...
...
@@ -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>
...
...
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
View file @
433526e0
...
...
@@ -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
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment