diff options
author | stom79 <tschneider.ac@gmail.com> | 2019-01-10 16:05:48 +0100 |
---|---|---|
committer | stom79 <tschneider.ac@gmail.com> | 2019-01-10 16:05:48 +0100 |
commit | 0d310ff856fec32cf4aeb7d4620ceedf332afc23 (patch) | |
tree | cfc307852aa9033c87734a1e9994dd27390840ed /app/src/main/java/fr/gouv | |
parent | c95d7045fa7a654f52789b5aa677faeb296e27e5 (diff) |
Fix resolution issue
Diffstat (limited to 'app/src/main/java/fr/gouv')
-rw-r--r-- | app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java | 126 | ||||
-rw-r--r-- | app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java | 6 |
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) { |