summaryrefslogtreecommitdiffstats
path: root/app/src/main/java
diff options
context:
space:
mode:
authorstom79 <tschneider.ac@gmail.com>2019-01-10 16:05:48 +0100
committerstom79 <tschneider.ac@gmail.com>2019-01-10 16:05:48 +0100
commit0d310ff856fec32cf4aeb7d4620ceedf332afc23 (patch)
treecfc307852aa9033c87734a1e9994dd27390840ed /app/src/main/java
parentc95d7045fa7a654f52789b5aa677faeb296e27e5 (diff)
Fix resolution issue
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java126
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java6
2 files changed, 79 insertions, 53 deletions
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java
index 3eb5bb357..d0afdaa7a 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java
@@ -108,6 +108,7 @@ import fr.gouv.etalab.mastodon.webview.MastalabWebChromeClient;
import fr.gouv.etalab.mastodon.webview.MastalabWebViewClient;
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT;
+import static fr.gouv.etalab.mastodon.helper.Helper.VIDEO_MODE_DIRECT;
import static fr.gouv.etalab.mastodon.helper.Helper.VIDEO_MODE_WEBVIEW;
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
import static fr.gouv.etalab.mastodon.helper.Helper.manageDownloads;
@@ -721,66 +722,87 @@ public class PeertubeActivity extends BaseActivity implements OnRetrievePeertube
if( playerView != null) {
loader.setVisibility(View.VISIBLE);
long position = player.getCurrentPosition();
- torrentStream.stopStream();
- torrentStream.removeListener(torrentListener);
+ PlaybackControlView controlView = playerView.findViewById(R.id.exo_controller);
+ resolution = controlView.findViewById(R.id.resolution);
+ resolution.setText(String.format("%sp",res));
+ if (mode == Helper.VIDEO_MODE_TORRENT) {
+ torrentStream.stopStream();
+ torrentStream.removeListener(torrentListener);
- TorrentOptions torrentOptions = new TorrentOptions.Builder()
- .saveLocation(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS))
- .removeFilesAfterStop(true)
- .build();
+ TorrentOptions torrentOptions = new TorrentOptions.Builder()
+ .saveLocation(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS))
+ .removeFilesAfterStop(true)
+ .build();
+ DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
+ TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
+ trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
- DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
- TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
- trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
+ DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getApplicationContext(),
+ Util.getUserAgent(getApplicationContext(), "Mastalab"), null);
- DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getApplicationContext(),
- Util.getUserAgent(getApplicationContext(), "Mastalab"), null);
+ ExtractorMediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
+ .createMediaSource(Uri.parse(peertube.getTorrentUrl(res)));
- ExtractorMediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
- .createMediaSource(Uri.parse(peertube.getTorrentUrl(null)));
+ player = ExoPlayerFactory.newSimpleInstance(PeertubeActivity.this, trackSelector);
+ playerView.setPlayer(player);
+ torrentStream = TorrentStream.init(torrentOptions);
+ torrentStream.startStream(peertube.getTorrentUrl(res));
+ torrentListener = new TorrentListener() {
+ @Override
+ public void onStreamPrepared(Torrent torrent) {
+ resolution.setText(res);
+ }
- player = ExoPlayerFactory.newSimpleInstance(PeertubeActivity.this, trackSelector);
- playerView.setPlayer(player);
- torrentStream = TorrentStream.init(torrentOptions);
- player.prepare(videoSource);
- torrentStream.startStream(peertube.getTorrentUrl(res));
- torrentListener = new TorrentListener() {
- @Override
- public void onStreamPrepared(Torrent torrent) {
- resolution.setText(res);
- }
- @Override
- public void onStreamStarted(Torrent torrent) {
- }
- @Override
- public void onStreamError(Torrent torrent, Exception e) {
- }
- @Override
- public void onStreamReady(Torrent torrent) {
- loader.setVisibility(View.GONE);
- resolution.setText(res);
- DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getApplicationContext(),
- Util.getUserAgent(getApplicationContext(), "Mastalab"), null);
-
- ExtractorMediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
- .createMediaSource(Uri.fromFile(torrent.getVideoFile()));
- player.prepare(videoSource);
- player.seekTo(0,position);
- player.setPlayWhenReady(true);
- }
- @Override
- public void onStreamProgress(Torrent torrent, StreamStatus status) {
- }
- @Override
- public void onStreamStopped() {
- loader.setVisibility(View.GONE);
- }
- };
- torrentStream.addListener(torrentListener);
+ @Override
+ public void onStreamStarted(Torrent torrent) {
+ }
+
+ @Override
+ public void onStreamError(Torrent torrent, Exception e) {
+ }
+
+ @Override
+ public void onStreamReady(Torrent torrent) {
+ loader.setVisibility(View.GONE);
+ resolution.setText(res);
+ DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getApplicationContext(),
+ Util.getUserAgent(getApplicationContext(), "Mastalab"), null);
+
+ ExtractorMediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
+ .createMediaSource(Uri.fromFile(torrent.getVideoFile()));
+ player.prepare(videoSource);
+ player.seekTo(0, position);
+ player.setPlayWhenReady(true);
+ }
+
+ @Override
+ public void onStreamProgress(Torrent torrent, StreamStatus status) {
+ }
+
+ @Override
+ public void onStreamStopped() {
+ loader.setVisibility(View.GONE);
+ }
+ };
+ torrentStream.addListener(torrentListener);
+ }else if( mode == VIDEO_MODE_DIRECT){
+
+ player = ExoPlayerFactory.newSimpleInstance(PeertubeActivity.this);
+ playerView.setPlayer(player);
+ loader.setVisibility(View.GONE);
+ DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getApplicationContext(),
+ Util.getUserAgent(getApplicationContext(), "Mastalab"), null);
+
+ ExtractorMediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
+ .createMediaSource(Uri.parse(peertube.getFileUrl(res)));
+ player.prepare(videoSource);
+ player.seekTo(0, position);
+ player.setPlayWhenReady(true);
+ }
}
}
@@ -846,7 +868,7 @@ public class PeertubeActivity extends BaseActivity implements OnRetrievePeertube
private void initResolution() {
PlaybackControlView controlView = playerView.findViewById(R.id.exo_controller);
resolution = controlView.findViewById(R.id.resolution);
- resolution.setText(String.format("%s dp",peertube.getResolution().get(0)));
+ resolution.setText(String.format("%sp",peertube.getResolution().get(0)));
resolution.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
index 6aceff51d..42e4bdba5 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
@@ -440,7 +440,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
mainLoader.setVisibility(View.GONE);
nextElementLoader.setVisibility(View.GONE);
//handle other API error but discards 404 - error which can often happen due to toots which have been deleted
- if( apiResponse == null || (apiResponse.getError() != null && apiResponse.getError().getStatusCode() != 404) ){
+ if( this.peertubes == null || this.statuses == null || apiResponse == null || (apiResponse.getError() != null && apiResponse.getError().getStatusCode() != 404) ){
if( apiResponse == null)
Toasty.error(context, context.getString(R.string.toast_error),Toast.LENGTH_LONG).show();
else
@@ -449,6 +449,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
flag_loading = false;
return;
}
+
//For remote Peertube remote instances
if(( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE || instanceType != null && instanceType.equals("PEERTUBE") || (type == RetrieveFeedsAsyncTask.Type.REMOTE_INSTANCE ) && peertubeAdapater != null)){
int previousPosition = this.peertubes.size();
@@ -456,6 +457,9 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
max_id = "0";
//max_id needs to work like an offset
max_id = String.valueOf(Integer.valueOf(max_id) + 50);
+ if( apiResponse.getPeertubes() == null){
+ return;
+ }
this.peertubes.addAll(apiResponse.getPeertubes());
//If no item were inserted previously the adapter is created
if( previousPosition == 0) {