Android Youtube API:Youtube查看不可见时如何播放视频

Android Youtube API:Youtube查看不可见时如何播放视频,android,android-youtube-api,Android,Android Youtube Api,我正试着用它播放Youtube视频。我使用YoutubePlayerFragment并将其添加到视图容器中。当视图容器可见时,它工作良好。然后我尝试使视图容器不可见。它停止工作并抛出错误“YouTube视频播放停止,因为播放器的视图不可见”。我想知道我是否可以在视图不可见的情况下播放视频?这是不可能的,即使你尝试一些技巧 这是因为SDK监视当前窗口的所有视图树,因此能够查看YouTube视频容器上是否放置了内容。我找到了一个解决方法。我们可以为YoutubePlayerFragment设置视图容

我正试着用它播放Youtube视频。我使用YoutubePlayerFragment并将其添加到视图容器中。当视图容器可见时,它工作良好。然后我尝试使视图容器不可见。它停止工作并抛出错误“YouTube视频播放停止,因为播放器的视图不可见”。我想知道我是否可以在视图不可见的情况下播放视频?

这是不可能的,即使你尝试一些技巧


这是因为SDK监视当前
窗口的所有视图树,因此能够查看YouTube视频容器上是否放置了内容。

我找到了一个解决方法。我们可以为YoutubePlayerFragment设置视图容器的alpha(0.01f)。通过这种方式,Youtube API被欺骗,认为视图仍然可见。

我的问题就是这个例子,但我用这段代码解决了这个问题

我初始化了两个变量:

public class VideoPlay extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
        YouTubePlayerView youTubePlayerView ;
        YouTubePlayer _YouTubePlayer;
此功能可更改您的
VIDEO\u ID

public void ChangeVIDEO_ID(YouTubePlayer player, String keyID){
    player.cueVideo(keyID);
}
我在
LinearLayout
中有一个
ListView
,当我在
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);
        }
});

我们还有什么办法欺骗班长吗?我们欺骗监视器,使其相信视频容器视图是可见的。要做到这一点,您需要对SDK的JAR进行反编译(已模糊),找到在视图树上执行检查的代码,并查看代码是否可以通过反射进行修改(这不太可能)。不幸的是,成功的机会微乎其微。我尝试了所有可能的场景。有时你甚至不能正常播放视频(每2秒暂停一次),尽管它是屏幕上的唯一视图。你最好换个播放器和youtube数据API。
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);
        }

    }
} }