26
26
import com .google .android .exoplayer2 .C ;
27
27
import com .google .android .exoplayer2 .DefaultRenderersFactory ;
28
28
import com .google .android .exoplayer2 .ExoPlaybackException ;
29
- import com .google .android .exoplayer2 .ExoPlayerFactory ;
30
29
import com .google .android .exoplayer2 .Format ;
31
30
import com .google .android .exoplayer2 .PlaybackParameters ;
32
31
import com .google .android .exoplayer2 .Player ;
@@ -99,11 +98,12 @@ public ExoMediaPlayer(){
99
98
mAppContext = AppContextAttach .getApplicationContext ();
100
99
RenderersFactory renderersFactory = new DefaultRenderersFactory (mAppContext );
101
100
DefaultTrackSelector trackSelector =
102
- new DefaultTrackSelector ();
103
- mInternalPlayer = ExoPlayerFactory .newSimpleInstance (mAppContext , renderersFactory , trackSelector );
101
+ new DefaultTrackSelector (mAppContext );
102
+ mInternalPlayer = new SimpleExoPlayer .Builder (mAppContext , renderersFactory )
103
+ .setTrackSelector (trackSelector ).build ();
104
104
105
105
// Measures bandwidth during playback. Can be null if not required.
106
- mBandwidthMeter = new DefaultBandwidthMeter ();
106
+ mBandwidthMeter = new DefaultBandwidthMeter . Builder ( mAppContext ). build ();
107
107
108
108
mInternalPlayer .addListener (mEventListener );
109
109
@@ -151,18 +151,21 @@ public void setDataSource(DataSource dataSource) {
151
151
return ;
152
152
}
153
153
154
- //create DefaultDataSourceFactory
155
- com .google .android .exoplayer2 .upstream .DataSource .Factory dataSourceFactory =
156
- new DefaultDataSourceFactory (mAppContext ,
157
- Util .getUserAgent (mAppContext , mAppContext .getPackageName ()), mBandwidthMeter );
158
-
159
154
//if scheme is http or https and DataSource contain extra data, use DefaultHttpDataSourceFactory.
160
155
String scheme = videoUri .getScheme ();
161
156
HashMap <String , String > extra = dataSource .getExtra ();
157
+ //setting user-agent from extra data
158
+ String settingUserAgent = extra !=null ?extra .get ("User-Agent" ):"" ;
159
+ //if not setting, use default user-agent
160
+ String userAgent = !TextUtils .isEmpty (settingUserAgent )?settingUserAgent :Util .getUserAgent (mAppContext , mAppContext .getPackageName ());
161
+ //create DefaultDataSourceFactory
162
+ com .google .android .exoplayer2 .upstream .DataSource .Factory dataSourceFactory =
163
+ new DefaultDataSourceFactory (mAppContext ,
164
+ userAgent , mBandwidthMeter );
162
165
if (extra !=null && extra .size ()>0 &&
163
166
("http" .equalsIgnoreCase (scheme )||"https" .equalsIgnoreCase (scheme ))){
164
167
dataSourceFactory = new DefaultHttpDataSourceFactory (
165
- Util . getUserAgent ( mAppContext , mAppContext . getPackageName ()) ,
168
+ userAgent ,
166
169
DefaultHttpDataSource .DEFAULT_CONNECT_TIMEOUT_MILLIS ,
167
170
DefaultHttpDataSource .DEFAULT_READ_TIMEOUT_MILLIS ,
168
171
true );
@@ -180,7 +183,7 @@ public void setDataSource(DataSource dataSource) {
180
183
if (timedTextSource !=null ){
181
184
Format format = Format .createTextSampleFormat (null , timedTextSource .getMimeType (), timedTextSource .getFlag (), null );
182
185
MediaSource timedTextMediaSource = new SingleSampleMediaSource .Factory (new DefaultDataSourceFactory (mAppContext ,
183
- Util . getUserAgent ( mAppContext , mAppContext . getPackageName ()) ))
186
+ userAgent ))
184
187
.createMediaSource (Uri .parse (timedTextSource .getPath ()), format , C .TIME_UNSET );
185
188
//merge MediaSource and timedTextMediaSource.
186
189
mediaSource = new MergingMediaSource (mediaSource , timedTextMediaSource );
0 commit comments