java - Android:使用 YouTube API 时应用程序存在后退点击

标签 java android android-activity youtube youtube-api

我正在使用 Android 版 Youtube API。下面是代码

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>

全屏可见并且用户点击返回时,我希望显示我的Activity。相反,现在发生的情况是应用程序中存在后退按钮。

我该如何解决这个问题?

更新 我发现了错误,在 setOnFullScreenListener 中,它从未识别出应用程序处于全屏状态,即使它是全屏状态。我尝试强制 boolean 值变为 true,但最终崩溃了,说 playernull

最佳答案

我不确定,但在您的 onFullScreen() 重写方法中,您已经设置了

isFullScreen = true; 

相反,使用

isFullScreen = b; 

希望这有帮助。

关于java - Android:使用 YouTube API 时应用程序存在后退点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47449468/

相关文章:

java - 将文件加载到内存中(Java)?

java - 日期的 Jdbc sql 语法错误

android - 如何使用库提供的辅助函数?

java - 覆盖后退按钮以充当主页按钮

android - NoClassDefFoundError : Failed resolution of: Landroid/support/v7/appcompat/R$styleable

Java - 使用别名的 Sql 查询

java - 在自定义脚本中从 Java 数组中检索数据

android - WebView goback() 重新加载最后一页

重新创建 Activity 后,Android Dialog 再次显示

android - 如果我选择大图像,OnActivityResult 会崩溃