2013-11-20 1 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) { 


    } 

} 

} 

P.S.

나는 이것이 내가 당신에게 여러 thumbnails를 만들기 위해 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에서 다른 Listener를 만들어야한다고 생각합니다. thumbnailView의 initialze 메서드 내에서 this을 전달하지 말고 clickListener에 대해 표시하는 것과 동일한 전환을하십시오.

또한 문제를 정리하고 관련 자료 만 게시하십시오.