PierfrancescoSoffritti / android-youtube-player

YouTube Player library for Android and Chromecast, stable and customizable.
https://pierfrancescosoffritti.github.io/android-youtube-player/
MIT License
3.41k stars 756 forks source link

how to add speed and quality changing options to player? #1152

Open SureshTimma opened 2 months ago

SureshTimma commented 2 months ago

how to add speed and quality changing options to player?

there are speed and quality changing options in default iframe player

SureshTimma commented 2 months ago

Screenshot 2024-06-27 230347

i want the settings icon in custom ui player control.

SureshTimma commented 2 months ago

package com.app.abignaacademy.youtubeplayer;

import android.view.View; import android.widget.ImageButton; import android.widget.RelativeLayout;

import com.app.abignaacademy.R; import com.pierfrancescosoffritti.androidyoutubeplayer.core.customui.utils.FadeViewHelper; import com.pierfrancescosoffritti.androidyoutubeplayer.core.customui.views.YouTubePlayerSeekBar; import com.pierfrancescosoffritti.androidyoutubeplayer.core.customui.views.YouTubePlayerSeekBarListener; import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.PlayerConstants; import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer; import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener; import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.utils.YouTubePlayerTracker; import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView;

public class CustomPlayerUiController extends AbstractYouTubePlayerListener { private final YouTubePlayerTracker playerTracker; private final YouTubePlayer youTubePlayer; private final YouTubePlayerView youTubePlayerView; private boolean isFullScreen = false;

public CustomPlayerUiController(View controlsUi, YouTubePlayer youTubePlayer, YouTubePlayerView youTubePlayerView) {
    this.youTubePlayer = youTubePlayer;
    this.youTubePlayerView = youTubePlayerView;
    playerTracker = new YouTubePlayerTracker();
    youTubePlayer.addListener(playerTracker);

    initViews(controlsUi);
}

private void initViews(View view) {
    View container = view.findViewById(R.id.container);
    RelativeLayout relativeLayout = view.findViewById(R.id.root);
    YouTubePlayerSeekBar seekBar = view.findViewById(R.id.playerSeekbar);
    ImageButton pausePlay = view.findViewById(R.id.pausePlay);
    youTubePlayer.addListener(seekBar);

    seekBar.setYoutubePlayerSeekBarListener(new YouTubePlayerSeekBarListener() {
        @Override
        public void seekTo(float v) {
            youTubePlayer.seekTo(v);
        }
    });

    pausePlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (playerTracker.getState() == PlayerConstants.PlayerState.PLAYING) {
                pausePlay.setImageResource(R.drawable.baseline_play_circle_filled_24);
                youTubePlayer.pause();
            } else {
                pausePlay.setImageResource(R.drawable.baseline_pause_circle_filled_24);
                youTubePlayer.play();
            }
        }
    });

    FadeViewHelper fadeViewHelper = new FadeViewHelper(container);
    fadeViewHelper.setAnimationDuration(FadeViewHelper.DEFAULT_ANIMATION_DURATION);
    fadeViewHelper.setFadeOutDelay(FadeViewHelper.DEFAULT_FADE_OUT_DELAY);
    youTubePlayer.addListener(fadeViewHelper);

    relativeLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            fadeViewHelper.toggleVisibility();
        }
    });

    container.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            fadeViewHelper.toggleVisibility();
        }
    });

    ImageButton fastForward = view.findViewById(R.id.fastForward);
    ImageButton fastBackward = view.findViewById(R.id.fastBackward);

    fastForward.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            float currentTime = playerTracker.getCurrentSecond();
            youTubePlayer.seekTo(currentTime + 10); // Fast forward by 10 seconds
        }
    });

    fastBackward.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            float currentTime = playerTracker.getCurrentSecond();
            youTubePlayer.seekTo(currentTime - 10); // Rewind by 10 seconds
        }
    });
}

}

this is the custom ui controls code. i want to add speed and quality changing options. but how?

PierfrancescoSoffritti commented 2 months ago

Well how you do it is up to you. I am not sure I understand the question.

SureshTimma commented 2 months ago

I have implemented speed changing menu. But Im unable to implement quality changing menu!