Я пытаюсь воспроизвести видео с YouTube с помощью Android Youtube API. Я использую YoutubePlayerFragment и добавляю его в контейнер представления. Это хорошо работает, когда контейнер представления виден. Затем я попытался сделать контейнер представления невидимым. Он перестает работать и выдает ошибку «Воспроизведение видео YouTube остановлено, потому что вид плеера не виден». Мне интересно, могу ли я воспроизвести видео с невидимым видом?
Android Youtube API: как воспроизводить видео, когда YoutubeView невидим
Ответы (3)
Это невозможно, даже если вы попытаетесь проделать некоторые трюки.
Это связано с тем, что SDK отслеживает все дерево просмотра для текущего Window
и, следовательно, может видеть, размещено ли что-либо поверх видеоконтейнера YouTube.
person
Sebastiano
schedule
15.04.2015
Есть ли способ обмануть монитор? мы обманываем монитор, чтобы он поверил, что вид видеоконтейнера ВИДИМ.
- person user2060386; 19.04.2015
Для этого вам потребуется декомпилировать JAR-файл SDK (который запутан), найти код, выполняющий проверку дерева представления, и посмотреть, можно ли изменить код с помощью Reflection (что очень важно). вряд ли). К сожалению, шансов на успех практически нет.
- person Sebastiano; 19.04.2015
Я пробовал все возможные сценарии. Иногда вы даже не можете правильно воспроизвести видео (пауза каждые 2 секунды), несмотря на то, что это единственный вид на экране. Вам было бы лучше с другим плеером и API данных YouTube.
- person Droidekas; 06.12.2015
Я нашел обходной путь. Мы можем установить Alpha(0.01f) контейнера представления для YoutubePlayerFragment. Таким образом, Youtube API обманывают, полагая, что представление все еще ВИДИМО.
person
user2060386
schedule
22.04.2015
Пример моей проблемы, но я решил это с помощью этого кода.
Я инициализировал 2 переменные:
public class VideoPlay extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
YouTubePlayerView youTubePlayerView ;
YouTubePlayer _YouTubePlayer;
Эта функция изменит ваш VIDEO_ID
public void ChangeVIDEO_ID(YouTubePlayer player, String keyID){
player.cueVideo(keyID);
}
У меня есть ListView
в LinearLayout
, когда я нажимаю элемент в ListView
, что-то вроде этого:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ChangeVIDEO_ID(_YouTubePlayer, mang.get(position).key);
}
});
Мой onInitializationSuccess()
был изменен ниже:
public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
_YouTubePlayer = player;
if (!wasRestored) {
Bundle bu = getIntent().getExtras();
if (bu != null) {
String keyID = bu.getString("key");
_YouTubePlayer.cueVideo(keyID);
} else {
_YouTubePlayer.cueVideo(VIDEO_ID);
}
}
} }
person
quynt
schedule
06.12.2015