|
|
|
|
@ -5,13 +5,19 @@ import android.content.Intent; |
|
|
|
|
import android.view.KeyEvent; |
|
|
|
|
import android.view.View; |
|
|
|
|
|
|
|
|
|
import androidx.lifecycle.ViewModelProvider; |
|
|
|
|
import androidx.viewbinding.ViewBinding; |
|
|
|
|
|
|
|
|
|
import com.fongmi.bear.R; |
|
|
|
|
import com.fongmi.bear.bean.Vod; |
|
|
|
|
import com.fongmi.bear.databinding.ActivityPlayBinding; |
|
|
|
|
import com.fongmi.bear.event.PlayerEvent; |
|
|
|
|
import com.fongmi.bear.impl.KeyDownImpl; |
|
|
|
|
import com.fongmi.bear.model.SiteViewModel; |
|
|
|
|
import com.fongmi.bear.player.Players; |
|
|
|
|
import com.fongmi.bear.utils.KeyDown; |
|
|
|
|
import com.fongmi.bear.utils.Notify; |
|
|
|
|
import com.fongmi.bear.utils.ResUtil; |
|
|
|
|
import com.fongmi.bear.utils.Utils; |
|
|
|
|
import com.google.android.exoplayer2.Player; |
|
|
|
|
|
|
|
|
|
@ -22,10 +28,19 @@ import org.greenrobot.eventbus.ThreadMode; |
|
|
|
|
public class PlayActivity extends BaseActivity implements KeyDownImpl { |
|
|
|
|
|
|
|
|
|
private ActivityPlayBinding mBinding; |
|
|
|
|
private SiteViewModel mSiteViewModel; |
|
|
|
|
private Vod.Flag mVodFlag; |
|
|
|
|
private KeyDown mKeyDown; |
|
|
|
|
private int mCurrent; |
|
|
|
|
|
|
|
|
|
public static void newInstance(Activity activity) { |
|
|
|
|
activity.startActivityForResult(new Intent(activity, PlayActivity.class), 1000); |
|
|
|
|
private String getFlag() { |
|
|
|
|
return getIntent().getStringExtra("flag"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static void newInstance(Activity activity, Vod.Flag flag) { |
|
|
|
|
Intent intent = new Intent(activity, PlayActivity.class); |
|
|
|
|
intent.putExtra("flag", flag.toString()); |
|
|
|
|
activity.startActivityForResult(intent, 1000); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@ -36,12 +51,48 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { |
|
|
|
|
@Override |
|
|
|
|
protected void initView() { |
|
|
|
|
mKeyDown = KeyDown.create(this); |
|
|
|
|
mVodFlag = Vod.Flag.objectFrom(getFlag()); |
|
|
|
|
mBinding.video.setPlayer(Players.get().callback(this).exo()); |
|
|
|
|
setViewModel(); |
|
|
|
|
findCurrent(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void initEvent() { |
|
|
|
|
EventBus.getDefault().register(this); |
|
|
|
|
mBinding.video.findViewById(R.id.next).setOnClickListener(view -> { |
|
|
|
|
int max = mVodFlag.getEpisodes().size() - 1; |
|
|
|
|
mCurrent = ++mCurrent > max ? max : mCurrent; |
|
|
|
|
if (mVodFlag.getEpisodes().get(mCurrent).isActivated()) Notify.show(R.string.error_play_next); |
|
|
|
|
else getPlayer(); |
|
|
|
|
}); |
|
|
|
|
mBinding.video.findViewById(R.id.prev).setOnClickListener(view -> { |
|
|
|
|
mCurrent = --mCurrent < 0 ? 0 : mCurrent; |
|
|
|
|
if (mVodFlag.getEpisodes().get(mCurrent).isActivated()) Notify.show(R.string.error_play_prev); |
|
|
|
|
else getPlayer(); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void setViewModel() { |
|
|
|
|
mSiteViewModel = new ViewModelProvider(this).get(SiteViewModel.class); |
|
|
|
|
mSiteViewModel.player.observe(this, object -> Players.get().setMediaSource(object)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void findCurrent() { |
|
|
|
|
for (int i = 0; i < mVodFlag.getEpisodes().size(); i++) { |
|
|
|
|
if (mVodFlag.getEpisodes().get(i).isActivated()) { |
|
|
|
|
mCurrent = i; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void getPlayer() { |
|
|
|
|
Vod.Flag.Episode episode = mVodFlag.getEpisodes().get(mCurrent); |
|
|
|
|
mVodFlag.setActivated(episode); |
|
|
|
|
mBinding.progress.getRoot().setVisibility(View.VISIBLE); |
|
|
|
|
mSiteViewModel.playerContent(mVodFlag.getFlag(), episode.getUrl()); |
|
|
|
|
Notify.show(ResUtil.getString(R.string.play_ready, episode.getName())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Subscribe(threadMode = ThreadMode.MAIN) |
|
|
|
|
@ -61,8 +112,13 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void onKeyVertical(boolean up) { |
|
|
|
|
public void onKeyUp() { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void onKeyDown() { |
|
|
|
|
mBinding.video.showController(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|