Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.inrating.android.screen.home;
- import android.content.Context;
- import android.net.Uri;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import com.google.android.exoplayer2.ParserException;
- import com.google.android.exoplayer2.Player;
- import com.google.android.exoplayer2.ui.SimpleExoPlayerView;
- import java.util.concurrent.atomic.AtomicInteger;
- import im.ene.toro.ToroPlayer;
- import im.ene.toro.exoplayer.ExoPlayerHelper;
- import im.ene.toro.helper.ToroPlayerHelper;
- import im.ene.toro.media.PlaybackInfo;
- import im.ene.toro.widget.Container;
- public final class LoopingExoPlayerViewHelper extends ToroPlayerHelper {
- public static int volume;
- private final ExoPlayerHelper.EventListener internalListener =
- new ExoPlayerHelper.EventListener() {
- @Override
- public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
- LoopingExoPlayerViewHelper.super.onPlayerStateUpdated(playWhenReady, playbackState);
- super.onPlayerStateChanged(playWhenReady, playbackState);
- }
- };
- private final AtomicInteger counter = new AtomicInteger(0); // initialize count
- private final ExoPlayerHelper helper;
- private final LoopingMediaSourceBuilder mediaSourceBuilder;
- public LoopingExoPlayerViewHelper(Container container, ToroPlayer player, Uri mediaUri) {
- super(container, player);
- if (!(player.getPlayerView() instanceof SimpleExoPlayerView)) {
- throw new IllegalArgumentException("Only SimpleExoPlayerView is supported.");
- }
- helper = new ExoPlayerHelper((SimpleExoPlayerView) player.getPlayerView());
- Context context = container.getContext().getApplicationContext();
- mediaSourceBuilder = new LoopingMediaSourceBuilder(context, mediaUri);
- }
- public final void setEventListener(Player.EventListener eventListener) {
- this.internalListener.setDelegate(eventListener);
- }
- /**
- * {@inheritDoc}
- *
- * @param playbackInfo the initial playback info. {@code null} if no such info available.
- */
- @Override
- public void initialize(@Nullable PlaybackInfo playbackInfo) {
- if (counter.getAndIncrement() == 0) { // prevent the multiple time init
- this.helper.addEventListener(internalListener);
- try {
- this.helper.prepare(mediaSourceBuilder);
- //Set volume by default
- this.helper.setVolume(volume);
- } catch (ParserException e) {
- e.printStackTrace();
- }
- }
- this.helper.setPlaybackInfo(playbackInfo);
- }
- @Override
- public void play() {
- this.helper.play();
- }
- @Override
- public void pause() {
- this.helper.pause();
- }
- @Override
- public boolean isPlaying() {
- return this.helper.isPlaying();
- }
- @NonNull
- @Override
- public PlaybackInfo getLatestPlaybackInfo() {
- return this.helper.getPlaybackInfo();
- }
- @Override
- public void release() {
- counter.set(0); // reset
- this.helper.removeEventListener(internalListener);
- this.helper.release();
- super.release();
- }
- public float getVolume(){
- return this.helper.getVolume();
- }
- public int volumeSelector() {
- if(this.helper.getVolume() == 1){
- this.helper.setVolume(0);
- volume = 0;
- } else {
- this.helper.setVolume(1);
- volume = 1;
- }
- return this.helper.getVolume() == 1 ? 1 : 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement