【问题标题】:How to stop a youtube video from playing如何停止播放 youtube 视频
【发布时间】:2018-08-23 16:59:00
【问题描述】:

大家好,正在搞乱 youtube api for android。我已经完成了所有设置和工作。我使用我的 firebase 数据库以列表的形式将所有相关信息发送到我的应用程序。列表显示一切都很好,视频从列表中播放。并进入全屏 ok.. 但如果我想在没有任何反应后单击列表中的另一个视频。所以我认为我必须停止并清除我的 YouTubePlayerView 但我不知道该怎么做

这就是我从 firebase 获取字符串的方式

 Dl_Strings dlStrings = dataSnapshot.getValue(Dl_Strings.class);
        Downloadscount.add(" " + String.valueOf(dlStrings.downloads));
        AppNameList.add(dlStrings.name);
        urlList.add(dlStrings.url);

这是我获取网址并将其添加到我的 youtube 播放器的地方

mlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {


            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                urlmain = urlList.get(i).toString();
                tag = TAGGER.get(i).toString();


                App_DownLoadCounter();
                YouTubePlayerView myoutubeplayerView = (YouTubePlayerView) ((Activity)mContext).findViewById(R.id.youtube);

                YouTubePlayer.OnInitializedListener mOninitial;

                mOninitial = new YouTubePlayer.OnInitializedListener() {
                    @Override
                    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                        youTubePlayer.loadVideo(urlmain);
                    }

                    @Override
                    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

                    }
                };

【问题讨论】:

    标签: java android youtube youtube-api


    【解决方案1】:

    我认为您的 sn-p 中缺少部分代码,但这就是为什么这不起作用:

    YouTube 播放器只需初始化一次。 loadVideo 未被调用,因为 onInitializationSuccess 仅在您第一次初始化播放器时被调用。

    您可以在第一次初始化时简单地保留YouTubePlayer youTubePlayer 的引用,并在需要时重新使用它。

    YouTubePlayer youTubePlayer;
    
    public void onCreate() {
      super.onCreate();
    
      // initialize player here and save 
      // ...
      @Override
      public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
         this.youTubePlayer = youTubePlayer;
      }
    
    }
    
    
    // in your listener
    mlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
          String videoID = urlList.get(i).toString();
          this.youTubePlayer.loadVideo(videoID);
      }
    }
    

    【讨论】:

    • 那么每次预置列表项时我如何调用初始化函数?谢谢@Pierfrancesco Soffritti
    • 对播放器的唯一引用是我的 onInitializationSuccess 方法中的那个。那么我该如何重复使用呢?
    • 我已尝试将其作为参考存储在我的代码顶部。它没有做任何事情
    【解决方案2】:

    根据Android Player API,您可以使用release() 方法:

    公共抽象无效释放()

    停止任何加载或视频播放并释放任何系统资源 此 YouTubePlayer 使用。

    请注意,在调用此方法后与此进行任何进一步的交互 YouTubePlayer 被禁止。必须创建一个新实例以 重新启用播放。

    【讨论】:

    • 感谢@noogui,但是当我尝试使用 release 时,它​​会导致一个错误,说 youtube player 已发布无法加载视频或类似的东西
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2013-03-03
    • 2015-10-12
    相关资源
    最近更新 更多