33import android .arch .lifecycle .Observer ;
44import android .arch .lifecycle .ViewModelProviders ;
55import android .content .Intent ;
6+ import android .net .Uri ;
67import android .os .Bundle ;
78import android .support .annotation .Nullable ;
9+ import android .support .v4 .app .NotificationManagerCompat ;
810import android .support .v7 .app .AppCompatActivity ;
9- import android .util . Log ;
11+ import android .view . View ;
1012import android .view .Window ;
1113import android .view .WindowManager ;
14+ import android .widget .ImageView ;
15+ import android .widget .TextView ;
16+
17+ import com .google .android .exoplayer2 .ExoPlayerFactory ;
18+ import com .google .android .exoplayer2 .SimpleExoPlayer ;
19+ import com .google .android .exoplayer2 .source .ExtractorMediaSource ;
20+ import com .google .android .exoplayer2 .trackselection .DefaultTrackSelector ;
21+ import com .google .android .exoplayer2 .ui .PlayerView ;
22+ import com .google .android .exoplayer2 .upstream .DefaultHttpDataSourceFactory ;
23+ import com .google .android .exoplayer2 .util .Util ;
24+ import com .squareup .picasso .Picasso ;
1225
1326import yankov .tsvetilian .watchit .Models .WatchModel ;
1427import yankov .tsvetilian .watchit .R ;
1730public class PlayerActivity extends AppCompatActivity {
1831
1932 private WatchViewModel watchViewModel ;
33+ private SimpleExoPlayer player ;
34+ private PlayerView playerView ;
2035
2136 @ Override
2237 protected void onCreate (Bundle savedInstanceState ) {
@@ -25,11 +40,14 @@ protected void onCreate(Bundle savedInstanceState) {
2540 getWindow ().setFlags (WindowManager .LayoutParams .FLAG_FULLSCREEN , WindowManager .LayoutParams .FLAG_FULLSCREEN );
2641 setContentView (R .layout .activity_player );
2742 watchViewModel = ViewModelProviders .of (this ).get (WatchViewModel .class );
43+ playerView = findViewById (R .id .player );
2844 }
2945
3046 @ Override
3147 protected void onStart () {
3248 super .onStart ();
49+ NotificationManagerCompat .from (this ).cancel (110 );
50+
3351 Intent playerData = getIntent ();
3452 if (playerData .getExtras () != null && playerData .hasExtra ("id" )) {
3553 watchViewModel .getWatchById (playerData .getExtras ().getInt ("id" )).observe (this , new Observer <WatchModel >() {
@@ -38,15 +56,15 @@ public void onChanged(@Nullable WatchModel watch) {
3856 if (watch != null ) {
3957 watch .setWatched (true );
4058 watchViewModel .update (watch );
41- Log . d ( "WATCHIT" , "FROM ACTIVITY" );
59+ playInit ( watch );
4260 }
4361 }
4462 });
4563 } else if (playerData .getExtras () != null && playerData .hasExtra ("watch" )) {
4664 WatchModel watch = playerData .getExtras ().getParcelable ("watch" );
4765 watch .setWatched (true );
4866 watchViewModel .insert (watch );
49- Log . d ( "WATCHIT" , "FROM SERVICE" );
67+ playInit ( watch );
5068 } else if (playerData .getExtras () != null && playerData .hasExtra ("later" )) {
5169 WatchModel watch = playerData .getExtras ().getParcelable ("later" );
5270 watch .setWatchLater (true );
@@ -55,8 +73,29 @@ public void onChanged(@Nullable WatchModel watch) {
5573 }
5674 }
5775
76+ private void playInit (WatchModel watch ) {
77+ player = ExoPlayerFactory .newSimpleInstance (PlayerActivity .this , new DefaultTrackSelector ());
78+
79+ playerView .setPlayer (player );
80+
81+ DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory (Util .getUserAgent (PlayerActivity .this , "WatchIT" ), null );
82+ dataSourceFactory .createDataSource ().setRequestProperty ("Authorization" , String .format ("Bearer %s" , watch .getAuthKey ()));
83+
84+ Uri url = Uri .parse (String .format ("http://%s:3090/watch%s/%s" , watch .getSourceIp (), watch .getPath (), watch .getFileName ()));
85+
86+ ExtractorMediaSource mediaSource = new ExtractorMediaSource .Factory (dataSourceFactory ).createMediaSource (url );
87+
88+ player .prepare (mediaSource );
89+ player .setPlayWhenReady (true );
90+ }
91+
5892 @ Override
5993 protected void onStop () {
6094 super .onStop ();
95+ playerView .setPlayer (null );
96+ if (player != null ) {
97+ player .release ();
98+ player = null ;
99+ }
61100 }
62101}
0 commit comments