ViewPager и YouTube API

Мне нужно разработать приложение, содержащее несколько экранов, каждый из которых содержит либо видео, либо картинку, либо только картинку. Переключаться между этими экранами каждый временной интервал

Подсказка: пользователь не должен взаимодействовать с видео, останавливая его или другие

Я пытаюсь использовать пейджер просмотра с API проигрывателя YouTube, но каждое видео работает в течение нескольких секунд, затем останавливается и выдает это предупреждение

«Воспроизведение видео YouTube остановлено из-за несанкционированного наложения поверх проигрывателя. YouTubePlayerView скрыт com.google.android.youtube.player»

прилагаю скриншоты моего кода.

Я много ищу по этой проблеме, но не могу решить прикрепленные скрины моего кода

Я пытаюсь создать это без просмотра пейджера, используя фрагменты и пролистывая фрагменты с помощью таймера .. но также получаю ту же проблему

Я также пытаюсь использовать веб-просмотр, но не могу справиться с подсказкой, сказанной ранее

есть ли какое-либо решение проблемы viewPager или другая идея для создания этого приложения?

это моя основная деятельность

mPager.setAdapter(mPagerAdapter);
        mPager.setOffscreenPageLimit(1);
        pagerchangeListener = new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                mPagerAdapter.onPageChanged(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        };
        mPager.addOnPageChangeListener(pagerchangeListener);

Метод адаптера viewPager:

@Override
        public Fragment getItem(int position) {

            if (data.get(position).getVideo() == null) {

                ImageFragment imageFragment = new ImageFragment();
                Bundle args = new Bundle();
                args.putString("IMAGE_URL", data.get(position).getImage());
                imageFragment.setArguments(args);
                return imageFragment;
            } else {

                Log.i("tag3", "getItem video" + String.valueOf(position));
                VideoFragment videoFragment =
                        VideoFragment.newInstance(data.get(position).getVideo(), data.get(position).getImage());
                listenerMap.put(position, videoFragment.getmInitializeListener());
                return videoFragment;

            }

        }

конструктор видеофрагмента:

public VideoFragment() {
        super();
        setRetainInstance(true);
        mInitializeListener = new InitializeListener() {
            @Override
            public void startVideo() {
                if (getUserVisibleHint())
                    initYoutube();
            }

            @Override
            public void stopVideo() {
                if (youTubePlayer1 != null)
                    youTubePlayer1.release();

            }
        };
    }

xml фрагмента vedio:

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation = "vertical"
    tools:context = "com.newConcept.education.galleryApp.fragment.VideoFragment">

    <FrameLayout
        android:id = "@+id/VideoFragment_youtube_layout"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_gravity = "top" />


    <ImageView
        android:id = "@+id/VideoFragment_imageView"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_weight = "1"
        android:scaleType = "fitXY"/>

</LinearLayout>
0
0
224
1

Ответы 1

Эта проблема возникает, когда вы "накладываете" свой YoutubeFragment на другое представление, например на изображение. Одно из возможных решений - если вы можете скрыть изображение во время воспроизведения видео, и вы больше не видите это предупреждение. Ставить только при запуске видео:

videoFragmentImageView.setVisibility(View.GONE) 

Также проверьте, нет ли у вас другого представления перед игроком, такого как FloatingActionButton или что-то еще, скройте эти представления. Сообщите нам, работает ли это

Спасибо за вашу помощь, я полностью удаляю представление изображения из фрагмента видео, чтобы проверить, исходит ли от него проблема .. но ничего не изменилось, проблема все еще существует

nagwa redaa 15.09.2018 17:59

Можете ли вы включить «показывать границы макета» в настройках разработчика вашего телефона? Только для того, чтобы проверить, нет ли у вас другого наложения вида. Другой совет: откройте другое действие, чтобы показать видео (рекомендуется). Другой: измените раскладку фрейма в корне и поместите относительный или линейный расклад.

Daniel Carreto 15.09.2018 20:03

Другие вопросы по теме