Android:使用YouTube API时,请从应用程序中单击“返回”



我正在使用youtube API进行Android。以下是代码

mainActivity.java

public class MainActivity extends AppCompatActivity implements YouTubePlayer.OnInitializedListener {
    private static final int RECOVERY_REQUEST = 1;
    private YouTubePlayerView youTubeView;
    private YouTubePlayerFragment youTubePlayerFragment;
    private YouTubePlayer player;
    private boolean isFullScreen;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
//        youTubeView.initialize(Config.YOUTUBE_API_KEY, this);
        youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager()
                .findFragmentById(R.id.youtube_fragment);
        youTubePlayerFragment.initialize(Config.YOUTUBE_API_KEY, this);
    }
    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
        if (!wasRestored) {
            this.player = player;
            this.player.cueVideo("fhWaJi1Hsfo"); // Plays https://www.youtube.com/watch?v=fhWaJi1Hsfo
           // player.setPlayerStyle(YouTubePlayer.PlayerStyle.CHROMELESS);
            player.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() {
                @Override
                public void onFullscreen(boolean b) {
                    isFullScreen = true;
                }
            });
        }
    }
    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult errorReason) {
        if (errorReason.isUserRecoverableError()) {
            errorReason.getErrorDialog(this, RECOVERY_REQUEST).show();
        } else {
            String error = String.format(getString(R.string.player_error), errorReason.toString());
            Toast.makeText(this, error, Toast.LENGTH_LONG).show();
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == RECOVERY_REQUEST) {
            // Retry initialization if user performed a recovery action
            getYouTubePlayerProvider().initialize(Config.YOUTUBE_API_KEY, this);
        }
    }
    protected Provider getYouTubePlayerProvider() {
        return youTubeView;
    }
    @Override
    public void onBackPressed() {
        Toast.makeText(this,"Back pressed",Toast.LENGTH_LONG).show();
        if(isFullScreen)
        {
            player.setFullscreen(false);
        }
        else
        {
            super.onBackPressed();
        }
    }
}

activity_main.xml

<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"
    tools:context=".MainActivity">
    <!--<com.google.android.youtube.player.YouTubePlayerView-->
        <!--android:id="@+id/youtube_view"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="wrap_content"/>-->
    <fragment
        android:id="@+id/youtube_fragment"
        android:name="com.google.android.youtube.player.YouTubePlayerFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</RelativeLayout>

Full Screen可见时,如果用户单击后,我希望显示我的Activity。相反,现在正在发生的是从应用程序中存在的返回按钮。

我该如何修复?

更新我确定了错误,在setOnFullScreenListener内部,即使是,该应用程序也从未确定在全屏中。我试图将布尔人迫使布尔人变为true,但最终崩溃了,说 playernull

我不确定,但是在您的onFullScreen()覆盖方法中,您已经设置

isFullScreen = true; 

而是使用

isFullScreen = b; 

希望这会有所帮助。

我找到了答案,只需删除onInitializationSuccess中的if条件即可。以下是代码。

public class MainActivity extends AppCompatActivity implements YouTubePlayer.OnInitializedListener {
    private static final int RECOVERY_REQUEST = 1;
    private YouTubePlayerView youTubeView;
    private YouTubePlayerFragment youTubePlayerFragment;
    private YouTubePlayer player;
    private boolean isFullScreen;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
//        youTubeView.initialize(Config.YOUTUBE_API_KEY, this);
        youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager()
                .findFragmentById(R.id.youtube_fragment);
        youTubePlayerFragment.initialize(Config.YOUTUBE_API_KEY, this);
    }
    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
            this.player = player;
            this.player.cueVideo("fhWaJi1Hsfo"); // Plays https://www.youtube.com/watch?v=fhWaJi1Hsfo
           // player.setPlayerStyle(YouTubePlayer.PlayerStyle.CHROMELESS);
            this.player.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() {
                @Override
                public void onFullscreen(boolean b) {
                    isFullScreen = b;
                }
            });

    }
    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult errorReason) {
        if (errorReason.isUserRecoverableError()) {
            errorReason.getErrorDialog(this, RECOVERY_REQUEST).show();
        } else {
            String error = String.format(getString(R.string.player_error), errorReason.toString());
            Toast.makeText(this, error, Toast.LENGTH_LONG).show();
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == RECOVERY_REQUEST) {
            // Retry initialization if user performed a recovery action
            getYouTubePlayerProvider().initialize(Config.YOUTUBE_API_KEY, this);
        }
    }
    protected Provider getYouTubePlayerProvider() {
        return youTubeView;
    }
    @Override
    public void onBackPressed() {

        if(isFullScreen)
        {
            Toast.makeText(this,"Full Screen",Toast.LENGTH_LONG).show();
            player.setFullscreen(false);
        }
        else
        {
            Toast.makeText(this,"Not Full Screen",Toast.LENGTH_LONG).show();
            super.onBackPressed();
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新