You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何检测YouTube播放器状态及调用虚拟暂停按钮

Android YouTube Player 播放状态检测与暂停控制实现方案

核心实现思路

1. 播放状态检测

通过AbstractYouTubePlayerListener的onPlaybackStateChanged回调获取播放状态,该回调会在播放状态切换时触发(如播放、暂停、缓冲等)。维护一个全局变量保存当前状态,用于后续判断。

2. 触发虚拟暂停操作

持有YouTubePlayer实例的全局引用,直接调用其pause()方法即可触发暂停,无需操作UI按钮。

完整代码示例

import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class Main3Activity extends AppCompatActivity {
    YouTubePlayerView youtubeplayerview;
    // 全局保存YouTubePlayer实例,用于后续调用暂停
    private YouTubePlayer mYouTubePlayer;
    // 保存当前播放状态
    private YouTubePlayer.PlaybackState mCurrentPlaybackState;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        youtubeplayerview.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
            @Override
            public void onReady(@NonNull YouTubePlayer youTubePlayer) {
                // 保存Player实例
                mYouTubePlayer = youTubePlayer;
                youTubePlayer.cueVideo("videoId", 0);
            }

            @Override
            public void onPlaybackStateChanged(@NonNull YouTubePlayer youTubePlayer, @NonNull YouTubePlayer.PlaybackState playbackState) {
                // 更新当前播放状态
                mCurrentPlaybackState = playbackState;
                // 可在此处根据状态做逻辑处理
                if (playbackState == YouTubePlayer.PlaybackState.PLAYING) {
                    // 视频正在播放
                } else if (playbackState == YouTubePlayer.PlaybackState.PAUSED) {
                    // 视频已暂停
                } else if (playbackState == YouTubePlayer.PlaybackState.BUFFERING) {
                    // 视频缓冲中
                }
            }
        });
    }

    // 示例:外部触发暂停的方法(比如按钮点击事件调用)
    private void triggerPause() {
        if (mYouTubePlayer != null) {
            // 调用Player的pause方法触发暂停
            mYouTubePlayer.pause();
        }
    }

    // 示例:判断当前是否处于播放状态
    private boolean isPlaying() {
        return mCurrentPlaybackState == YouTubePlayer.PlaybackState.PLAYING;
    }
}

关键说明

  • YouTubePlayer.PlaybackState包含以下常用状态:
    • PLAYING:视频正在播放
    • PAUSED:视频已暂停
    • BUFFERING:视频缓冲中
    • ENDED:视频播放结束
  • 必须确保mYouTubePlayer不为空时再调用pause(),避免空指针异常
  • onPlaybackStateChanged会在状态每次切换时触发,可根据业务需求在此回调中执行相应逻辑

内容的提问来源于stack exchange,提问作者RS Studio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:40:31