/* * This file is part of Popcorn Time. * * Popcorn Time is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Popcorn Time is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Popcorn Time. If not, see <http://www.gnu.org/licenses/>. */ package pct.droid.tv.activities; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; import butterknife.ButterKnife; import pct.droid.base.fragments.BaseVideoPlayerFragment; import pct.droid.base.providers.media.models.Show; import pct.droid.base.torrent.StreamInfo; import pct.droid.base.torrent.TorrentService; import pct.droid.base.utils.PrefUtils; import pct.droid.tv.R; import pct.droid.tv.activities.base.PTVBaseActivity; import pct.droid.tv.fragments.PTVPlaybackOverlayFragment; import pct.droid.tv.fragments.PTVVideoPlayerFragment; public class PTVVideoPlayerActivity extends PTVBaseActivity implements PTVVideoPlayerFragment.Callback { private PTVVideoPlayerFragment mPlayerFragment; private PTVPlaybackOverlayFragment mPlaybackOverlayFragment; public final static String EXTRA_STREAM_INFO = "stream_info"; public final static String EXTRA_SHOW_INFO = "episode_info"; private StreamInfo mStreamInfo; private boolean mIsBackPressed = false; public static Intent startActivity(Context context, StreamInfo info) { return startActivity(context, info, 0); } public static Intent startActivity( Context context, StreamInfo info, @SuppressWarnings("UnusedParameters") long resumePosition) { Intent i = new Intent(context, PTVVideoPlayerActivity.class); i.putExtra(EXTRA_STREAM_INFO, info); // todo: resume position context.startActivity(i); return i; } public static Intent startActivity(Context context, StreamInfo info, Show show) { Intent i = new Intent(context, PTVVideoPlayerActivity.class); i.putExtra(EXTRA_STREAM_INFO, info); i.putExtra(EXTRA_SHOW_INFO, show); // todo: resume position context.startActivity(i); return i; } @Override public void onBackPressed() { super.onBackPressed(); mIsBackPressed = true; } @SuppressLint("MissingSuperCall") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.activity_videoplayer); createStreamInfo(); mPlayerFragment = (PTVVideoPlayerFragment) getSupportFragmentManager().findFragmentById(R.id.fragment); mPlaybackOverlayFragment = (PTVPlaybackOverlayFragment) getSupportFragmentManager().findFragmentById(R.id.playback_overlay_fragment); ButterKnife.bind(this); } @Override protected void onResume() { super.onResume(); mIsBackPressed = false; } @Override protected void onPause() { super.onPause(); if (mIsBackPressed) { mPlayerFragment.deactivateMediaSession(); } if (mPlayerFragment.isMediaSessionActive()) { mPlaybackOverlayFragment.setKeepEventBusRegistration(true); } else { mPlaybackOverlayFragment.setKeepEventBusRegistration(false); PrefUtils.save(this, BaseVideoPlayerFragment.RESUME_POSITION, 0); } } @Override protected void onDestroy() { if (mService != null) mService.stopStreaming(); super.onDestroy(); } @Override public void onVisibleBehindCanceled() { mPlayerFragment.pause(); super.onVisibleBehindCanceled(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); } @Override public StreamInfo getInfo() { if (mStreamInfo == null) createStreamInfo(); return mStreamInfo; } @Override public TorrentService getService() { return mService; } @Override public void onTorrentServiceConnected() { mService.addListener(mPlayerFragment); } @Override public void onTorrentServiceDisconnected() { mService.removeListener(mPlayerFragment); } @Override public Long getResumePosition() { //todo: Implement ResumePosition on Android TV return 0L; } private void createStreamInfo() { mStreamInfo = getIntent().getParcelableExtra(EXTRA_STREAM_INFO); String location = mStreamInfo.getVideoLocation(); if (!location.startsWith("file://") && !location.startsWith("http://") && !location.startsWith("https://")) { location = "file://" + location; } mStreamInfo.setVideoLocation(location); } public void skipTo(StreamInfo info, Show show) { mPlayerFragment.deactivateMediaSession(); mPlayerFragment.onPlaybackEndReached(); getTorrentService().removeListener(mPlayerFragment); finish(); PTVStreamLoadingActivity.startActivity(this, info, show); } }