Мне нужно разработать приложение, содержащее несколько экранов, каждый из которых содержит либо видео, либо картинку, либо только картинку. Переключаться между этими экранами каждый временной интервал
Подсказка: пользователь не должен взаимодействовать с видео, останавливая его или другие
Я пытаюсь использовать пейджер просмотра с 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>
Эта проблема возникает, когда вы "накладываете" свой YoutubeFragment на другое представление, например на изображение. Одно из возможных решений - если вы можете скрыть изображение во время воспроизведения видео, и вы больше не видите это предупреждение. Ставить только при запуске видео:
videoFragmentImageView.setVisibility(View.GONE)
Также проверьте, нет ли у вас другого представления перед игроком, такого как FloatingActionButton или что-то еще, скройте эти представления. Сообщите нам, работает ли это
Можете ли вы включить «показывать границы макета» в настройках разработчика вашего телефона? Только для того, чтобы проверить, нет ли у вас другого наложения вида. Другой совет: откройте другое действие, чтобы показать видео (рекомендуется). Другой: измените раскладку фрейма в корне и поместите относительный или линейный расклад.
Спасибо за вашу помощь, я полностью удаляю представление изображения из фрагмента видео, чтобы проверить, исходит ли от него проблема .. но ничего не изменилось, проблема все еще существует