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

时间:2017-11-23 07:06:04

标签: java android android-activity youtube youtube-api

我正在使用Youtube API for 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

2 个答案:

答案 0 :(得分:1)

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

isFullScreen = true; 

相反,请使用

isFullScreen = b; 

希望这会有所帮助。

答案 1 :(得分:0)

我找到了答案,只需移除>>> import numpy >>> x = numpy.arange(5) >>> y = x[1:] >>> z = x[:-1] >>> x.__array_interface__['data'] (39692208L, False) >>> y.__array_interface__['data'] (39692212L, False) >>> z.__array_interface__['data'] (39692208L, False) 中的if条件即可。以下是代码。

onInitializationSuccess