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
628234fd
authored
Apr 20, 2020
by
bachinger
Committed by
Ian Baker
Apr 27, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Read media items from intent
PiperOrigin-RevId: 307442976
parent
6a36574a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
219 additions
and
80 deletions
demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/Sample.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java
0 → 100644
View file @
628234fd
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
google
.
android
.
exoplayer2
.
demo
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
Assertions
.
checkNotNull
;
import
android.content.Intent
;
import
android.net.Uri
;
import
androidx.annotation.Nullable
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.MediaItem
;
import
com.google.android.exoplayer2.offline.DownloadRequest
;
import
com.google.android.exoplayer2.util.MimeTypes
;
import
com.google.android.exoplayer2.util.Util
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
/** Util to read from an intent. */
public
class
IntentUtil
{
// Actions.
public
static
final
String
ACTION_VIEW
=
"com.google.android.exoplayer.demo.action.VIEW"
;
public
static
final
String
ACTION_VIEW_LIST
=
"com.google.android.exoplayer.demo.action.VIEW_LIST"
;
// Activity extras.
public
static
final
String
SPHERICAL_STEREO_MODE_EXTRA
=
"spherical_stereo_mode"
;
public
static
final
String
SPHERICAL_STEREO_MODE_MONO
=
"mono"
;
public
static
final
String
SPHERICAL_STEREO_MODE_TOP_BOTTOM
=
"top_bottom"
;
public
static
final
String
SPHERICAL_STEREO_MODE_LEFT_RIGHT
=
"left_right"
;
// Player configuration extras.
public
static
final
String
ABR_ALGORITHM_EXTRA
=
"abr_algorithm"
;
public
static
final
String
ABR_ALGORITHM_DEFAULT
=
"default"
;
public
static
final
String
ABR_ALGORITHM_RANDOM
=
"random"
;
// Media item configuration extras.
public
static
final
String
URI_EXTRA
=
"uri"
;
public
static
final
String
EXTENSION_EXTRA
=
"extension"
;
public
static
final
String
IS_LIVE_EXTRA
=
"is_live"
;
public
static
final
String
DRM_SCHEME_EXTRA
=
"drm_scheme"
;
public
static
final
String
DRM_LICENSE_URL_EXTRA
=
"drm_license_url"
;
public
static
final
String
DRM_KEY_REQUEST_PROPERTIES_EXTRA
=
"drm_key_request_properties"
;
public
static
final
String
DRM_SESSION_FOR_CLEAR_TYPES_EXTRA
=
"drm_session_for_clear_types"
;
public
static
final
String
DRM_MULTI_SESSION_EXTRA
=
"drm_multi_session"
;
public
static
final
String
AD_TAG_URI_EXTRA
=
"ad_tag_uri"
;
public
static
final
String
SUBTITLE_URI_EXTRA
=
"subtitle_uri"
;
public
static
final
String
SUBTITLE_MIME_TYPE_EXTRA
=
"subtitle_mime_type"
;
public
static
final
String
SUBTITLE_LANGUAGE_EXTRA
=
"subtitle_language"
;
// For backwards compatibility only.
public
static
final
String
DRM_SCHEME_UUID_EXTRA
=
"drm_scheme_uuid"
;
public
static
final
String
PREFER_EXTENSION_DECODERS_EXTRA
=
"prefer_extension_decoders"
;
public
static
final
String
TUNNELING_EXTRA
=
"tunneling"
;
/** Creates a list of {@link MediaItem media items} from an {@link Intent}. */
public
static
List
<
MediaItem
>
createMediaItemsFromIntent
(
Intent
intent
,
DownloadTracker
downloadTracker
)
{
List
<
MediaItem
>
mediaItems
=
new
ArrayList
<>();
if
(
ACTION_VIEW_LIST
.
equals
(
intent
.
getAction
()))
{
int
index
=
0
;
while
(
intent
.
hasExtra
(
URI_EXTRA
+
"_"
+
index
))
{
Uri
uri
=
Uri
.
parse
(
intent
.
getStringExtra
(
URI_EXTRA
+
"_"
+
index
));
mediaItems
.
add
(
createMediaItemFromIntent
(
uri
,
intent
,
/* extrasKeySuffix= */
"_"
+
index
,
downloadTracker
.
getDownloadRequest
(
uri
)));
index
++;
}
}
else
{
Uri
uri
=
intent
.
getData
();
mediaItems
.
add
(
createMediaItemFromIntent
(
uri
,
intent
,
/* extrasKeySuffix= */
""
,
downloadTracker
.
getDownloadRequest
(
uri
)));
}
return
mediaItems
;
}
private
static
MediaItem
createMediaItemFromIntent
(
Uri
uri
,
Intent
intent
,
String
extrasKeySuffix
,
@Nullable
DownloadRequest
downloadRequest
)
{
String
extension
=
intent
.
getStringExtra
(
EXTENSION_EXTRA
+
extrasKeySuffix
);
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
()
.
setSourceUri
(
uri
)
.
setStreamKeys
(
downloadRequest
!=
null
?
downloadRequest
.
streamKeys
:
null
)
.
setCustomCacheKey
(
downloadRequest
!=
null
?
downloadRequest
.
customCacheKey
:
null
)
.
setMimeType
(
inferAdaptiveStreamMimeType
(
uri
,
extension
))
.
setAdTagUri
(
intent
.
getStringExtra
(
AD_TAG_URI_EXTRA
+
extrasKeySuffix
))
.
setSubtitles
(
createSubtitlesFromIntent
(
intent
,
extrasKeySuffix
));
return
populateDrmPropertiesFromIntent
(
builder
,
intent
,
extrasKeySuffix
).
build
();
}
private
static
List
<
MediaItem
.
Subtitle
>
createSubtitlesFromIntent
(
Intent
intent
,
String
extrasKeySuffix
)
{
if
(!
intent
.
hasExtra
(
SUBTITLE_URI_EXTRA
+
extrasKeySuffix
))
{
return
Collections
.
emptyList
();
}
return
Collections
.
singletonList
(
new
MediaItem
.
Subtitle
(
Uri
.
parse
(
intent
.
getStringExtra
(
SUBTITLE_URI_EXTRA
+
extrasKeySuffix
)),
checkNotNull
(
intent
.
getStringExtra
(
SUBTITLE_MIME_TYPE_EXTRA
+
extrasKeySuffix
)),
intent
.
getStringExtra
(
SUBTITLE_LANGUAGE_EXTRA
+
extrasKeySuffix
),
C
.
SELECTION_FLAG_DEFAULT
));
}
private
static
MediaItem
.
Builder
populateDrmPropertiesFromIntent
(
MediaItem
.
Builder
builder
,
Intent
intent
,
String
extrasKeySuffix
)
{
String
schemeKey
=
DRM_SCHEME_EXTRA
+
extrasKeySuffix
;
String
schemeUuidKey
=
DRM_SCHEME_UUID_EXTRA
+
extrasKeySuffix
;
if
(!
intent
.
hasExtra
(
schemeKey
)
&&
!
intent
.
hasExtra
(
schemeUuidKey
))
{
return
builder
;
}
String
drmSchemeExtra
=
intent
.
hasExtra
(
schemeKey
)
?
intent
.
getStringExtra
(
schemeKey
)
:
intent
.
getStringExtra
(
schemeUuidKey
);
String
[]
drmSessionForClearTypesExtra
=
intent
.
getStringArrayExtra
(
DRM_SESSION_FOR_CLEAR_TYPES_EXTRA
+
extrasKeySuffix
);
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
String
[]
keyRequestPropertiesArray
=
intent
.
getStringArrayExtra
(
DRM_KEY_REQUEST_PROPERTIES_EXTRA
+
extrasKeySuffix
);
if
(
keyRequestPropertiesArray
!=
null
)
{
for
(
int
i
=
0
;
i
<
keyRequestPropertiesArray
.
length
;
i
+=
2
)
{
headers
.
put
(
keyRequestPropertiesArray
[
i
],
keyRequestPropertiesArray
[
i
+
1
]);
}
}
builder
.
setDrmUuid
(
Util
.
getDrmUuid
(
Util
.
castNonNull
(
drmSchemeExtra
)))
.
setDrmLicenseUri
(
intent
.
getStringExtra
(
DRM_LICENSE_URL_EXTRA
+
extrasKeySuffix
))
.
setDrmSessionForClearTypes
(
toTrackTypeList
(
drmSessionForClearTypesExtra
))
.
setDrmMultiSession
(
intent
.
getBooleanExtra
(
DRM_MULTI_SESSION_EXTRA
+
extrasKeySuffix
,
false
))
.
setDrmLicenseRequestHeaders
(
headers
);
return
builder
;
}
private
static
List
<
Integer
>
toTrackTypeList
(
@Nullable
String
[]
trackTypeStringsArray
)
{
if
(
trackTypeStringsArray
==
null
)
{
return
Collections
.
emptyList
();
}
HashSet
<
Integer
>
trackTypes
=
new
HashSet
<>();
for
(
String
trackTypeString
:
trackTypeStringsArray
)
{
switch
(
Util
.
toLowerInvariant
(
trackTypeString
))
{
case
"audio"
:
trackTypes
.
add
(
C
.
TRACK_TYPE_AUDIO
);
break
;
case
"video"
:
trackTypes
.
add
(
C
.
TRACK_TYPE_VIDEO
);
break
;
default
:
throw
new
IllegalArgumentException
(
"Invalid track type: "
+
trackTypeString
);
}
}
return
new
ArrayList
<>(
trackTypes
);
}
@Nullable
private
static
String
inferAdaptiveStreamMimeType
(
Uri
uri
,
@Nullable
String
extension
)
{
@C
.
ContentType
int
contentType
=
Util
.
inferContentType
(
uri
,
extension
);
switch
(
contentType
)
{
case
C
.
TYPE_DASH
:
return
MimeTypes
.
APPLICATION_MPD
;
case
C
.
TYPE_HLS
:
return
MimeTypes
.
APPLICATION_M3U8
;
case
C
.
TYPE_SS
:
return
MimeTypes
.
APPLICATION_SS
;
case
C
.
TYPE_OTHER
:
default
:
return
null
;
}
}
}
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
View file @
628234fd
...
@@ -39,10 +39,8 @@ import com.google.android.exoplayer2.Player;
...
@@ -39,10 +39,8 @@ import com.google.android.exoplayer2.Player;
import
com.google.android.exoplayer2.RenderersFactory
;
import
com.google.android.exoplayer2.RenderersFactory
;
import
com.google.android.exoplayer2.SimpleExoPlayer
;
import
com.google.android.exoplayer2.SimpleExoPlayer
;
import
com.google.android.exoplayer2.audio.AudioAttributes
;
import
com.google.android.exoplayer2.audio.AudioAttributes
;
import
com.google.android.exoplayer2.demo.Sample.UriSample
;
import
com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.DecoderInitializationException
;
import
com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.DecoderInitializationException
;
import
com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException
;
import
com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException
;
import
com.google.android.exoplayer2.offline.DownloadRequest
;
import
com.google.android.exoplayer2.source.BehindLiveWindowException
;
import
com.google.android.exoplayer2.source.BehindLiveWindowException
;
import
com.google.android.exoplayer2.source.DefaultMediaSourceFactory
;
import
com.google.android.exoplayer2.source.DefaultMediaSourceFactory
;
import
com.google.android.exoplayer2.source.TrackGroupArray
;
import
com.google.android.exoplayer2.source.TrackGroupArray
;
...
@@ -66,7 +64,6 @@ import java.lang.reflect.Constructor;
...
@@ -66,7 +64,6 @@ import java.lang.reflect.Constructor;
import
java.net.CookieHandler
;
import
java.net.CookieHandler
;
import
java.net.CookieManager
;
import
java.net.CookieManager
;
import
java.net.CookiePolicy
;
import
java.net.CookiePolicy
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.List
;
...
@@ -74,45 +71,6 @@ import java.util.List;
...
@@ -74,45 +71,6 @@ import java.util.List;
public
class
PlayerActivity
extends
AppCompatActivity
public
class
PlayerActivity
extends
AppCompatActivity
implements
OnClickListener
,
PlaybackPreparer
,
PlayerControlView
.
VisibilityListener
{
implements
OnClickListener
,
PlaybackPreparer
,
PlayerControlView
.
VisibilityListener
{
// Activity extras.
public
static
final
String
SPHERICAL_STEREO_MODE_EXTRA
=
"spherical_stereo_mode"
;
public
static
final
String
SPHERICAL_STEREO_MODE_MONO
=
"mono"
;
public
static
final
String
SPHERICAL_STEREO_MODE_TOP_BOTTOM
=
"top_bottom"
;
public
static
final
String
SPHERICAL_STEREO_MODE_LEFT_RIGHT
=
"left_right"
;
// Actions.
public
static
final
String
ACTION_VIEW
=
"com.google.android.exoplayer.demo.action.VIEW"
;
public
static
final
String
ACTION_VIEW_LIST
=
"com.google.android.exoplayer.demo.action.VIEW_LIST"
;
// Player configuration extras.
public
static
final
String
ABR_ALGORITHM_EXTRA
=
"abr_algorithm"
;
public
static
final
String
ABR_ALGORITHM_DEFAULT
=
"default"
;
public
static
final
String
ABR_ALGORITHM_RANDOM
=
"random"
;
// Media item configuration extras.
public
static
final
String
URI_EXTRA
=
"uri"
;
public
static
final
String
EXTENSION_EXTRA
=
"extension"
;
public
static
final
String
IS_LIVE_EXTRA
=
"is_live"
;
public
static
final
String
DRM_SCHEME_EXTRA
=
"drm_scheme"
;
public
static
final
String
DRM_LICENSE_URL_EXTRA
=
"drm_license_url"
;
public
static
final
String
DRM_KEY_REQUEST_PROPERTIES_EXTRA
=
"drm_key_request_properties"
;
public
static
final
String
DRM_SESSION_FOR_CLEAR_TYPES_EXTRA
=
"drm_session_for_clear_types"
;
public
static
final
String
DRM_MULTI_SESSION_EXTRA
=
"drm_multi_session"
;
public
static
final
String
PREFER_EXTENSION_DECODERS_EXTRA
=
"prefer_extension_decoders"
;
public
static
final
String
TUNNELING_EXTRA
=
"tunneling"
;
public
static
final
String
AD_TAG_URI_EXTRA
=
"ad_tag_uri"
;
public
static
final
String
SUBTITLE_URI_EXTRA
=
"subtitle_uri"
;
public
static
final
String
SUBTITLE_MIME_TYPE_EXTRA
=
"subtitle_mime_type"
;
public
static
final
String
SUBTITLE_LANGUAGE_EXTRA
=
"subtitle_language"
;
// For backwards compatibility only.
public
static
final
String
DRM_SCHEME_UUID_EXTRA
=
"drm_scheme_uuid"
;
// Saved instance state keys.
// Saved instance state keys.
private
static
final
String
KEY_TRACK_SELECTOR_PARAMETERS
=
"track_selector_parameters"
;
private
static
final
String
KEY_TRACK_SELECTOR_PARAMETERS
=
"track_selector_parameters"
;
...
@@ -154,7 +112,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -154,7 +112,7 @@ public class PlayerActivity extends AppCompatActivity
@Override
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Intent
intent
=
getIntent
();
Intent
intent
=
getIntent
();
String
sphericalStereoMode
=
intent
.
getStringExtra
(
SPHERICAL_STEREO_MODE_EXTRA
);
String
sphericalStereoMode
=
intent
.
getStringExtra
(
IntentUtil
.
SPHERICAL_STEREO_MODE_EXTRA
);
if
(
sphericalStereoMode
!=
null
)
{
if
(
sphericalStereoMode
!=
null
)
{
setTheme
(
R
.
style
.
PlayerTheme_Spherical
);
setTheme
(
R
.
style
.
PlayerTheme_Spherical
);
}
}
...
@@ -176,11 +134,11 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -176,11 +134,11 @@ public class PlayerActivity extends AppCompatActivity
playerView
.
requestFocus
();
playerView
.
requestFocus
();
if
(
sphericalStereoMode
!=
null
)
{
if
(
sphericalStereoMode
!=
null
)
{
int
stereoMode
;
int
stereoMode
;
if
(
SPHERICAL_STEREO_MODE_MONO
.
equals
(
sphericalStereoMode
))
{
if
(
IntentUtil
.
SPHERICAL_STEREO_MODE_MONO
.
equals
(
sphericalStereoMode
))
{
stereoMode
=
C
.
STEREO_MODE_MONO
;
stereoMode
=
C
.
STEREO_MODE_MONO
;
}
else
if
(
SPHERICAL_STEREO_MODE_TOP_BOTTOM
.
equals
(
sphericalStereoMode
))
{
}
else
if
(
IntentUtil
.
SPHERICAL_STEREO_MODE_TOP_BOTTOM
.
equals
(
sphericalStereoMode
))
{
stereoMode
=
C
.
STEREO_MODE_TOP_BOTTOM
;
stereoMode
=
C
.
STEREO_MODE_TOP_BOTTOM
;
}
else
if
(
SPHERICAL_STEREO_MODE_LEFT_RIGHT
.
equals
(
sphericalStereoMode
))
{
}
else
if
(
IntentUtil
.
SPHERICAL_STEREO_MODE_LEFT_RIGHT
.
equals
(
sphericalStereoMode
))
{
stereoMode
=
C
.
STEREO_MODE_LEFT_RIGHT
;
stereoMode
=
C
.
STEREO_MODE_LEFT_RIGHT
;
}
else
{
}
else
{
showToast
(
R
.
string
.
error_unrecognized_stereo_mode
);
showToast
(
R
.
string
.
error_unrecognized_stereo_mode
);
...
@@ -198,7 +156,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -198,7 +156,7 @@ public class PlayerActivity extends AppCompatActivity
}
else
{
}
else
{
DefaultTrackSelector
.
ParametersBuilder
builder
=
DefaultTrackSelector
.
ParametersBuilder
builder
=
new
DefaultTrackSelector
.
ParametersBuilder
(
/* context= */
this
);
new
DefaultTrackSelector
.
ParametersBuilder
(
/* context= */
this
);
boolean
tunneling
=
intent
.
getBooleanExtra
(
TUNNELING_EXTRA
,
false
);
boolean
tunneling
=
intent
.
getBooleanExtra
(
IntentUtil
.
TUNNELING_EXTRA
,
false
);
if
(
Util
.
SDK_INT
>=
21
&&
tunneling
)
{
if
(
Util
.
SDK_INT
>=
21
&&
tunneling
)
{
builder
.
setTunnelingAudioSessionId
(
C
.
generateAudioSessionIdV21
(
/* context= */
this
));
builder
.
setTunnelingAudioSessionId
(
C
.
generateAudioSessionIdV21
(
/* context= */
this
));
}
}
...
@@ -337,15 +295,17 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -337,15 +295,17 @@ public class PlayerActivity extends AppCompatActivity
private
void
initializePlayer
()
{
private
void
initializePlayer
()
{
if
(
player
==
null
)
{
if
(
player
==
null
)
{
Intent
intent
=
getIntent
();
Intent
intent
=
getIntent
();
mediaItems
=
createMediaItems
(
intent
);
mediaItems
=
createMediaItems
(
intent
);
if
(
mediaItems
.
isEmpty
())
{
if
(
mediaItems
.
isEmpty
())
{
return
;
return
;
}
}
TrackSelection
.
Factory
trackSelectionFactory
;
TrackSelection
.
Factory
trackSelectionFactory
;
String
abrAlgorithm
=
intent
.
getStringExtra
(
ABR_ALGORITHM_EXTRA
);
String
abrAlgorithm
=
intent
.
getStringExtra
(
IntentUtil
.
ABR_ALGORITHM_EXTRA
);
if
(
abrAlgorithm
==
null
||
ABR_ALGORITHM_DEFAULT
.
equals
(
abrAlgorithm
))
{
if
(
abrAlgorithm
==
null
||
IntentUtil
.
ABR_ALGORITHM_DEFAULT
.
equals
(
abrAlgorithm
))
{
trackSelectionFactory
=
new
AdaptiveTrackSelection
.
Factory
();
trackSelectionFactory
=
new
AdaptiveTrackSelection
.
Factory
();
}
else
if
(
ABR_ALGORITHM_RANDOM
.
equals
(
abrAlgorithm
))
{
}
else
if
(
IntentUtil
.
ABR_ALGORITHM_RANDOM
.
equals
(
abrAlgorithm
))
{
trackSelectionFactory
=
new
RandomTrackSelection
.
Factory
();
trackSelectionFactory
=
new
RandomTrackSelection
.
Factory
();
}
else
{
}
else
{
showToast
(
R
.
string
.
error_unrecognized_abr_algorithm
);
showToast
(
R
.
string
.
error_unrecognized_abr_algorithm
);
...
@@ -354,7 +314,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -354,7 +314,7 @@ public class PlayerActivity extends AppCompatActivity
}
}
boolean
preferExtensionDecoders
=
boolean
preferExtensionDecoders
=
intent
.
getBooleanExtra
(
PREFER_EXTENSION_DECODERS_EXTRA
,
false
);
intent
.
getBooleanExtra
(
IntentUtil
.
PREFER_EXTENSION_DECODERS_EXTRA
,
false
);
RenderersFactory
renderersFactory
=
RenderersFactory
renderersFactory
=
((
DemoApplication
)
getApplication
()).
buildRenderersFactory
(
preferExtensionDecoders
);
((
DemoApplication
)
getApplication
()).
buildRenderersFactory
(
preferExtensionDecoders
);
...
@@ -389,35 +349,19 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -389,35 +349,19 @@ public class PlayerActivity extends AppCompatActivity
private
List
<
MediaItem
>
createMediaItems
(
Intent
intent
)
{
private
List
<
MediaItem
>
createMediaItems
(
Intent
intent
)
{
String
action
=
intent
.
getAction
();
String
action
=
intent
.
getAction
();
boolean
actionIsListView
=
ACTION_VIEW_LIST
.
equals
(
action
);
boolean
actionIsListView
=
IntentUtil
.
ACTION_VIEW_LIST
.
equals
(
action
);
if
(!
actionIsListView
&&
!
ACTION_VIEW
.
equals
(
action
))
{
if
(!
actionIsListView
&&
!
IntentUtil
.
ACTION_VIEW
.
equals
(
action
))
{
showToast
(
getString
(
R
.
string
.
unexpected_intent_action
,
action
));
showToast
(
getString
(
R
.
string
.
unexpected_intent_action
,
action
));
finish
();
finish
();
return
Collections
.
emptyList
();
return
Collections
.
emptyList
();
}
}
Sample
intentAsSample
=
Sample
.
createFromIntent
(
intent
);
List
<
MediaItem
>
mediaItems
=
UriSample
[]
samples
=
IntentUtil
.
createMediaItemsFromIntent
(
intentAsSample
instanceof
Sample
.
PlaylistSample
intent
,
((
DemoApplication
)
getApplication
()).
getDownloadTracker
());
?
((
Sample
.
PlaylistSample
)
intentAsSample
).
children
:
new
UriSample
[]
{(
UriSample
)
intentAsSample
};
List
<
MediaItem
>
mediaItems
=
new
ArrayList
<>();
boolean
hasAds
=
false
;
boolean
hasAds
=
false
;
for
(
UriSample
sample
:
samples
)
{
for
(
int
i
=
0
;
i
<
mediaItems
.
size
();
i
++)
{
MediaItem
mediaItem
=
sample
.
toMediaItem
();
MediaItem
mediaItem
=
mediaItems
.
get
(
i
);
DownloadRequest
downloadRequest
=
((
DemoApplication
)
getApplication
())
.
getDownloadTracker
()
.
getDownloadRequest
(
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
).
sourceUri
);
if
(
downloadRequest
!=
null
)
{
mediaItem
=
mediaItem
.
buildUpon
()
.
setStreamKeys
(
downloadRequest
.
streamKeys
)
.
setCustomCacheKey
(
downloadRequest
.
customCacheKey
)
.
build
();
}
if
(!
Util
.
checkCleartextTrafficPermitted
(
mediaItem
))
{
if
(!
Util
.
checkCleartextTrafficPermitted
(
mediaItem
))
{
showToast
(
R
.
string
.
error_cleartext_not_permitted
);
showToast
(
R
.
string
.
error_cleartext_not_permitted
);
...
@@ -442,7 +386,6 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -442,7 +386,6 @@ public class PlayerActivity extends AppCompatActivity
}
}
}
}
hasAds
|=
mediaItem
.
playbackProperties
.
adTagUri
!=
null
;
hasAds
|=
mediaItem
.
playbackProperties
.
adTagUri
!=
null
;
mediaItems
.
add
(
mediaItem
);
}
}
if
(!
hasAds
)
{
if
(!
hasAds
)
{
releaseAdsLoader
();
releaseAdsLoader
();
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/Sample.java
View file @
628234fd
This diff is collapsed.
Click to expand it.
demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java
View file @
628234fd
...
@@ -230,14 +230,14 @@ public class SampleChooserActivity extends AppCompatActivity
...
@@ -230,14 +230,14 @@ public class SampleChooserActivity extends AppCompatActivity
Sample
sample
=
(
Sample
)
view
.
getTag
();
Sample
sample
=
(
Sample
)
view
.
getTag
();
Intent
intent
=
new
Intent
(
this
,
PlayerActivity
.
class
);
Intent
intent
=
new
Intent
(
this
,
PlayerActivity
.
class
);
intent
.
putExtra
(
intent
.
putExtra
(
PlayerActivity
.
PREFER_EXTENSION_DECODERS_EXTRA
,
IntentUtil
.
PREFER_EXTENSION_DECODERS_EXTRA
,
isNonNullAndChecked
(
preferExtensionDecodersMenuItem
));
isNonNullAndChecked
(
preferExtensionDecodersMenuItem
));
String
abrAlgorithm
=
String
abrAlgorithm
=
isNonNullAndChecked
(
randomAbrMenuItem
)
isNonNullAndChecked
(
randomAbrMenuItem
)
?
PlayerActivity
.
ABR_ALGORITHM_RANDOM
?
IntentUtil
.
ABR_ALGORITHM_RANDOM
:
PlayerActivity
.
ABR_ALGORITHM_DEFAULT
;
:
IntentUtil
.
ABR_ALGORITHM_DEFAULT
;
intent
.
putExtra
(
PlayerActivity
.
ABR_ALGORITHM_EXTRA
,
abrAlgorithm
);
intent
.
putExtra
(
IntentUtil
.
ABR_ALGORITHM_EXTRA
,
abrAlgorithm
);
intent
.
putExtra
(
PlayerActivity
.
TUNNELING_EXTRA
,
isNonNullAndChecked
(
tunnelingMenuItem
));
intent
.
putExtra
(
IntentUtil
.
TUNNELING_EXTRA
,
isNonNullAndChecked
(
tunnelingMenuItem
));
sample
.
addToIntent
(
intent
);
sample
.
addToIntent
(
intent
);
startActivity
(
intent
);
startActivity
(
intent
);
return
true
;
return
true
;
...
...
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