YouTube API - 另一项活动中的黑屏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YouTube API - 另一项活动中的黑屏相关的知识,希望对你有一定的参考价值。

我想在我的活动中实施YouTube播放器。

该计划如下:

我的Java已停止:

import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerFragment;
import com.google.android.youtube.player.YouTubePlayerView;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import android.os.Bundle;
import android.widget.Toast;
import android.content.Intent;

public class Stopavid extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener{

    public static final String DEVELOPER_KEY = "xxx";
    private static final String VIDEO_ID = "xxx";
    private static final int RECOVERY_DIALOG_REQUEST = 1;

    YouTubePlayerFragment myYouTubePlayerFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.stopavid);
        myYouTubePlayerFragment = (YouTubePlayerFragment)getFragmentManager()
                .findFragmentById(R.id.youtubeplayerfragment);
        myYouTubePlayerFragment.initialize(DEVELOPER_KEY, this);
    }
    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider,
                                        YouTubeInitializationResult errorReason) {
        if (errorReason.isUserRecoverableError()) {
            errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
        } else {
            String errorMessage = String.format(
                    "There was an error initializing the YouTubePlayer (%1$s)",
                    errorReason.toString());
            Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
        }
    }
    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player,
                                        boolean wasRestored) {
        if (!wasRestored) {
            player.cueVideo(VIDEO_ID);
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == RECOVERY_DIALOG_REQUEST) {
// Retry initialization if user performed a recovery action
            getYouTubePlayerProvider().initialize(DEVELOPER_KEY, this);
        }
    }
    protected YouTubePlayer.Provider getYouTubePlayerProvider() {
        return (YouTubePlayerView)findViewById(R.id.youtubeplayerfragment);
    }
}

和xml stopavid:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">
    <fragment
        android:name="com.google.android.youtube.player.YouTubePlayerFragment"
        android:id="@+id/youtubeplayerfragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
</RelativeLayout>

我的问题是当我在MainActivity中使用此代码创建新项目时,一切正常。但是当我试图把它放在另一个活动中时,我就有了黑屏。

Click here - black screen

答案

基于这个thread,有时你会在暂停一个玩家时获得黑屏,然后立即转移到另一个玩家(例如在全屏活动中)。在进入另一项活动之前,尝试在你要离开的玩家身上使用player.release()。如果有帮助,你也可以查看这个link

以上是关于YouTube API - 另一项活动中的黑屏的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL 和 Glut 中的黑屏

更改 Storybord 视图控制器时 iOS 13 中的黑屏

如何避免phonegap中的黑屏

内容后面的 UIViewController 中的黑屏

Apple Watch 应用中的黑屏输出

某些机器上的 OpenGL 中的黑屏(PIXELFORMATDESCRIPTOR/SwapBuffer?)