Skip to content

Commit bf36f0a

Browse files
committed
add exo player to the player activity
1 parent 9a6247e commit bf36f0a

File tree

2 files changed

+50
-7
lines changed

2 files changed

+50
-7
lines changed

app/src/main/java/yankov/tsvetilian/watchit/Activities/PlayerActivity.java

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,25 @@
33
import android.arch.lifecycle.Observer;
44
import android.arch.lifecycle.ViewModelProviders;
55
import android.content.Intent;
6+
import android.net.Uri;
67
import android.os.Bundle;
78
import android.support.annotation.Nullable;
9+
import android.support.v4.app.NotificationManagerCompat;
810
import android.support.v7.app.AppCompatActivity;
9-
import android.util.Log;
11+
import android.view.View;
1012
import android.view.Window;
1113
import 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

1326
import yankov.tsvetilian.watchit.Models.WatchModel;
1427
import yankov.tsvetilian.watchit.R;
@@ -17,6 +30,8 @@
1730
public 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
}
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
34
xmlns:tools="http://schemas.android.com/tools"
45
android:layout_width="match_parent"
56
android:layout_height="match_parent"
67
android:keepScreenOn="true"
78
tools:context=".Activities.PlayerActivity">
89

9-
<TextView
10-
android:text="HELLO FROM PLAYER"
11-
android:layout_width="wrap_content"
12-
android:layout_height="wrap_content" />
10+
<com.google.android.exoplayer2.ui.PlayerView
11+
android:id="@+id/player"
12+
app:resize_mode="fill"
13+
app:fastforward_increment="5000"
14+
app:rewind_increment="5000"
15+
android:layout_width="match_parent"
16+
android:layout_height="match_parent" />
1317
</FrameLayout>

0 commit comments

Comments
 (0)