2013-11-20 46 views
1

我试图用Android的Youtube API构建一个非常简单的视频播放器。到目前为止,我有一个视频(可以点击和播放)和两个缩略图下面 - 我的问题是:我需要弄清楚如何(正确)将不同的视频分配给每个缩略图 - 然后播放它们。YouTube API不按预期播放视频

我已经尝试这样分配使用缩略图:

public static final String VIDEO1_ID = "HNtBphqE_LA"; 
public static final String VIDEO2_ID = "YWteQj_q3Ro"; 
public static final String VIDEO3_ID = "Ak--L4bYly0"; 

但由于某些原因,我得到了正确的缩略图显示和视频的播放都youTubeThumbnailLoader1和youTubeThumbnailLoader2。

有什么建议吗?我只需要调整/修改下面的代码来显示独特的视频/缩略图(而不是像现在那样重复多次)并播放它们。

Screenshot

代码:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home); 

     youTubePlayerView = (YouTubePlayerView)findViewById(R.id.youtubeplayerview); 
     youTubePlayerView.initialize(API_KEY, this); 

     youTubeThumbnailView1 = (YouTubeThumbnailView)findViewById(R.id.youtubethumbnailview1); 
     youTubeThumbnailView1.initialize(API_KEY, this); 

     youTubeThumbnailView2 = (YouTubeThumbnailView)findViewById(R.id.youtubethumbnailview2); 
     youTubeThumbnailView2.initialize(API_KEY, this); 


     youTubeThumbnailView1.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View arg0) { 
    if(youTubePlayer != null){ 
    youTubePlayer.play(); 
    } 
    }}); 


    youTubeThumbnailView2.setOnClickListener(new OnClickListener(){ 

@Override 
public void onClick(View arg0) { 
if(youTubePlayer != null){ 
youTubePlayer.play(); 
} 
}}); 
} 

@Override 
public void onInitializationFailure(Provider provider, 
    YouTubeInitializationResult result) { 

} 

@Override 
public void onInitializationSuccess(Provider provider, YouTubePlayer player, 
    boolean wasRestored) { 

    youTubePlayer = player; 

    if (!wasRestored) { 
     player.cueVideo(VIDEO_ID); 
     } 
} 

@Override 
public void onInitializationFailure(YouTubeThumbnailView thumbnailView, 
    YouTubeInitializationResult error) { 



} 

@Override 
public void onInitializationSuccess(YouTubeThumbnailView thumbnailView, 
    YouTubeThumbnailLoader thumbnailLoader) { 



    youTubeThumbnailLoader1 = thumbnailLoader; 
    thumbnailLoader.setOnThumbnailLoadedListener(new ThumbnailLoadedListener()); 

    youTubeThumbnailLoader1.setVideo(VIDEO1_ID); 

    youTubeThumbnailLoader2 = thumbnailLoader; 
    thumbnailLoader.setOnThumbnailLoadedListener(new ThumbnailLoadedListener()); 

    youTubeThumbnailLoader2.setVideo(VIDEO2_ID); 



} 

private final class ThumbnailLoadedListener implements 
    YouTubeThumbnailLoader.OnThumbnailLoadedListener { 

    @Override 
    public void onThumbnailError(YouTubeThumbnailView arg0, ErrorReason arg1) { 

    } 

    @Override 
    public void onThumbnailLoaded(YouTubeThumbnailView arg0, String arg1) { 


    } 

} 

} 

附:

我认为这可能与我使用youTubeThumbnailView1和youTubeThumbnailView2创建多个缩略图的事实有关 - 但是我有一种感觉,这可能不是这样做的正确方式。

+0

任何人有任何建议吗? – JavaNoob

回答

1

您没有为缩略图设置正确的视频。每个thumbnailView clickListener都没有区别!

尝试在您的onCreate

public void onCreate(Bundle icicle){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.home); 

    youTubePlayerView = (YouTubePlayerView)findViewById(R.id.youtubeplayerview); 
    youTubePlayerView.initialize(API_KEY, this); 

    youTubeThumbnailView1 = (YouTubeThumbnailView)findViewById(R.id.youtubethumbnailview1); 
    youTubeThumbnailView1.initialize(API_KEY, this); 

    youTubeThumbnailView2 = (YouTubeThumbnailView)findViewById(R.id.youtubethumbnailview2); 
    youTubeThumbnailView2.initialize(API_KEY, this); 

    youTubeThumbnailView1.setOnClickListener(new OnClickListener(){ 
     if(youTubePlayer != null){ 
      youTubePlayer.loadVideo(VIDEO1_ID) 
      youTubePlayer.play(); 
     } 
    }); 

    youTubeThumbnailView2.setOnClickListener(new OnClickListener(){ 
     if(youTubePlayer != null){ 
      youTubePlayer.loadVideo(VIDEO2_ID) 
      youTubePlayer.play(); 
     } 
    }); 

} 

说明是这样的:我看到了很多乱七八糟的东西,在你的代码。

@Override 
public void onInitializationSuccess(YouTubeThumbnailView thumbnailView, 
    YouTubeThumbnailLoader thumbnailLoader) { 

    youTubeThumbnailLoader1 = thumbnailLoader; 
    thumbnailLoader.setOnThumbnailLoadedListener(new ThumbnailLoadedListener()); 

    youTubeThumbnailLoader1.setVideo(VIDEO1_ID); 

    youTubeThumbnailLoader2 = thumbnailLoader; 
    thumbnailLoader.setOnThumbnailLoadedListener(new ThumbnailLoadedListener()); 

    youTubeThumbnailLoader2.setVideo(VIDEO2_ID); 
} 

这部分显示您对编程缺乏基本的了解。你可以简单地只写:

@Override 
public void onInitializationSuccess(YouTubeThumbnailView thumbnailView, 
    YouTubeThumbnailLoader thumbnailLoader) { 

    thumbnailLoader.setOnThumbnailLoadedListener(new ThumbnailLoadedListener()); 
    thumbnailLoader.setVideo(VIDEO1_ID); 
    thumbnailLoader.setVideo(VIDEO2_ID); 

} 

,这显然是不什么打算。我想你必须在你的onCreate中创建不同的监听器。不要在你的thumbnailViews的initialze方法内部通过this,并使我向clickListener显示的相同开关。

另请尝试确定您拥有的问题并发布相关内容。