当你滚动我的饲料墙时,你的管玩家突然停止了

时间:2016-12-29 06:09:22

标签: android android-fragments android-youtube-api

在我的Android应用程序中,我有一个图像,GIF和视频的feedwall。对于播放视频我正在使用Android YouTube api播放YouTube链接(URL)中的视频。 feedwall是一个使用基本适配器的列表视图。对于视频,我使用的是FrameLayout,它包含在RelativeLayout中,如下所示

             <RelativeLayout
                android:id="@+id/feedVideoRelLayout"
                android:layout_width="wrap_content"
                android:layout_height="300dp">

                <FrameLayout
                    android:id="@+id/youTubePlayerLayout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    />
            </RelativeLayout>

我将此Framelayout转换为YouTubePlayerSupportFragment,如下所示

YouTubePlayerSupportFragment youTubePlayerLayout;

 viewHolder.youTubePlayerLayout = (YouTubePlayerSupportFragment) activityRef.getSupportFragmentManager().findFragmentById(R.id.youTubePlayerLayout);

现在我在我的feedwall中播放视频,在我正在使用的适配器的getView方法中

 viewHolder.youTubePlayerLayout = YouTubePlayerSupportFragment.newInstance();
FragmentTransaction transaction;

            transaction = activityRef.getSupportFragmentManager().beginTransaction();
            transaction.add(R.id.youTubePlayerLayout, viewHolder.youTubePlayerLayout).commit();
            viewHolder.youTubePlayerLayout.initialize(DeveloperKey.DEVELOPER_KEY, new YouTubePlayer.OnInitializedListener() {
                @Override
                public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
                    if (!wasRestored) {
                        player.loadVideo(Utils.getYouTubeVideoIdFromUrl(feedModelArrayList.get(position).getPostMediaURL()));
                        player.setShowFullscreenButton(false);
                        player.play();
                    }

                }

                @Override
                public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult arg1) {
                    String errorMessage = arg0.toString();
                    Toast.makeText(activityRef, errorMessage, Toast.LENGTH_LONG).show();
                    Log.d("errorMessage:", errorMessage);

                }
            });

在我的Feedwall中,只要检测到视频链接,视频就会在YouTube播放器中播放。现在问题是,这种情况只是第一次发生。 向下滚动后如果再次检测到视频链接,则播放器加载视频但在播放后立即停止,在一秒钟内。其次,即使点击播放按钮,成功播放的第一个视频也会表现相同。

在logcat中我收到类似

的警告
 W/YouTubeAndroidPlayerAPI: YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is not contained inside its ancestor android.widget.FrameLayout{d56f6d9 V.E...... ......I. 0,0-0,0}. The distances between the ancestor's edges and that of the YouTubePlayerView is: left: 0, top: 0, right: 0, bottom: 0 (these should all be positive).

我在SO上经历了与此警告相关的所有线程,但不幸的是,它们都没有用。

0 个答案:

没有答案