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
相关产品推荐
相关产品推荐

