YouTubePlayer - 如何处理点击侦听器?

Mao*_*hen 5 android youtube-api android-fragments youtube-data-api

我有一个在那里播放视频的布局,我想处理这个播放器上的 onClick 。在我的线性布局中,我有 api 中建议的 YouTube 片段:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment        
        android:name="com.google.android.youtube.player.YouTubePlayerFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/youtubePlayerFragment"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

然后我在我的活动中访问这个片段:

mYouTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtubePlayerFragment);
Run Code Online (Sandbox Code Playgroud)

我初始化它:

    mYouTubePlayerFragment.initialize(CategoriesTabsData.DEVELOPER_KEY, new com.google.android.youtube.player.YouTubePlayer.OnInitializedListener() {
        @Override
        public void onInitializationSuccess(com.google.android.youtube.player.YouTubePlayer.Provider provider, com.google.android.youtube.player.YouTubePlayer youTubePlayer, boolean b) {
             // loading the video                
        }

        @Override
        public void onInitializationFailure(com.google.android.youtube.player.YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

        }
    });
Run Code Online (Sandbox Code Playgroud)

我想在点击玩家时将“click”打印到 Log.d 。因此,当播放视频并且点击/触摸其播放器时,我想将“点击”打印到日志中

我正在尝试处理播放器上的点击(我在 onInitializationSuccess 中获取了 youtubeplayer 对象),但没有成功。

我试过这个:

    mYouTubePlayerFragment.getView().setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("youtube", "click");
        }
    });
Run Code Online (Sandbox Code Playgroud)

但它没有到达 onClick。然后,我尝试创建扩展 YouTubePlayerFragment 并实现 View.OnClickListener 的 MyYouTubePlayerFragment,因此我在 xml 中使用适当的名称(com.mypackagename.MyYouTubePlayerFragment)设置片段,并将 mYouTubePlayerFragment 的类型设置为 MyYouTubePlayerFragment,但它没有到达 onClick。

如何“捕捉”视频点击?

YMY*_*YMY 2

我认为您应该扩展 YouTubeSupportFragment 并添加到您的 YoutubePlayer (在 onInitializationSuccess 方法内)YouTubePlayer.PlaybackEventListener

您可能对 onPaused() 和 onPlaying() 方法感兴趣。

例子:

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
    youTubePlayer = player;
    if (!wasRestored) {
        youTubePlayer.setPlaybackEventListener(new YouTubePlayer.PlaybackEventListener() {
            @Override
            public void onPlaying() {

            }

            @Override
            public void onPaused() {

            }

            @Override
            public void onStopped() {

            }

            @Override
            public void onBuffering(boolean b) {

            }

            @Override
            public void onSeekTo(int i) {

            }
        });
        youTubePlayer.cueVideo(currentVideoID, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)