2626import com .google .android .exoplayer2 .C ;
2727import com .google .android .exoplayer2 .DefaultRenderersFactory ;
2828import com .google .android .exoplayer2 .ExoPlaybackException ;
29- import com .google .android .exoplayer2 .ExoPlayerFactory ;
3029import com .google .android .exoplayer2 .Format ;
3130import com .google .android .exoplayer2 .PlaybackParameters ;
3231import com .google .android .exoplayer2 .Player ;
@@ -99,11 +98,12 @@ public ExoMediaPlayer(){
9998 mAppContext = AppContextAttach .getApplicationContext ();
10099 RenderersFactory renderersFactory = new DefaultRenderersFactory (mAppContext );
101100 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 ();
104104
105105 // Measures bandwidth during playback. Can be null if not required.
106- mBandwidthMeter = new DefaultBandwidthMeter ();
106+ mBandwidthMeter = new DefaultBandwidthMeter . Builder ( mAppContext ). build ();
107107
108108 mInternalPlayer .addListener (mEventListener );
109109
@@ -151,18 +151,21 @@ public void setDataSource(DataSource dataSource) {
151151 return ;
152152 }
153153
154- //create DefaultDataSourceFactory
155- com .google .android .exoplayer2 .upstream .DataSource .Factory dataSourceFactory =
156- new DefaultDataSourceFactory (mAppContext ,
157- Util .getUserAgent (mAppContext , mAppContext .getPackageName ()), mBandwidthMeter );
158-
159154 //if scheme is http or https and DataSource contain extra data, use DefaultHttpDataSourceFactory.
160155 String scheme = videoUri .getScheme ();
161156 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 );
162165 if (extra !=null && extra .size ()>0 &&
163166 ("http" .equalsIgnoreCase (scheme )||"https" .equalsIgnoreCase (scheme ))){
164167 dataSourceFactory = new DefaultHttpDataSourceFactory (
165- Util . getUserAgent ( mAppContext , mAppContext . getPackageName ()) ,
168+ userAgent ,
166169 DefaultHttpDataSource .DEFAULT_CONNECT_TIMEOUT_MILLIS ,
167170 DefaultHttpDataSource .DEFAULT_READ_TIMEOUT_MILLIS ,
168171 true );
@@ -180,7 +183,7 @@ public void setDataSource(DataSource dataSource) {
180183 if (timedTextSource !=null ){
181184 Format format = Format .createTextSampleFormat (null , timedTextSource .getMimeType (), timedTextSource .getFlag (), null );
182185 MediaSource timedTextMediaSource = new SingleSampleMediaSource .Factory (new DefaultDataSourceFactory (mAppContext ,
183- Util . getUserAgent ( mAppContext , mAppContext . getPackageName ()) ))
186+ userAgent ))
184187 .createMediaSource (Uri .parse (timedTextSource .getPath ()), format , C .TIME_UNSET );
185188 //merge MediaSource and timedTextMediaSource.
186189 mediaSource = new MergingMediaSource (mediaSource , timedTextMediaSource );
0 commit comments