마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

viewpager위에 youtubeplayer가능한가요?

0 추천
public Object instantiateItem(View pager, int position) {
View v = null;

if (position == 0) {
v = mInflater.inflate(R.layout.text_content_page, null);
} else if (position == 1) {
v = mInflater.inflate(R.layout.image_content_page, null);
} else if (position == 2) {
v = mInflater.inflate(R.layout.video_content_page, null);
YouTubePlayerView videoView = (YouTubePlayerView) v.findViewById(R.id.videoView);
videoView.initialize(DeveloperKey.DEVELOPER_KEY, ContentActivity.this);
}
((ViewPager) pager).addView(v, 0);

return v;
}

이런식으로 사용해서 youtube player를 띄우려고 하는데..처음보는 에러가 떠서 전혀 해결을 못하고 있네요...

 

 

우기왕 (1,520 포인트) 님이 2015년 1월 26일 질문

3개의 답변

+1 추천
 
채택된 답변
nicehee (73,100 포인트) 님이 2015년 1월 26일 답변
우기왕님이 2015년 1월 27일 채택됨
밑에 답글로 에러 로그 올릴게요
좀 더 접근하긴 했습니다 현재 유투브썸네일 뷰를 사용해서 썸네일까지는 보입니다.
0 추천
01-27 09:21:31.761: E/AndroidRuntime(3390): FATAL EXCEPTION: main
01-27 09:21:31.761: E/AndroidRuntime(3390): Process: com.dbusker.foodcraving, PID: 3390
01-27 09:21:31.761: E/AndroidRuntime(3390): java.lang.NullPointerException
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at com.google.android.youtube.player.YouTubeStandalonePlayer.a(Unknown Source)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at com.google.android.youtube.player.YouTubeStandalonePlayer.createVideoIntent(Unknown Source)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at com.google.android.youtube.player.YouTubeStandalonePlayer.createVideoIntent(Unknown Source)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at com.dbusker.foodcraving.activity.ContentActivity$PagerAdapterClass$1.onClick(ContentActivity.java:139)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at android.view.View.performClick(View.java:4754)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at android.view.View$PerformClick.run(View.java:19605)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at android.os.Handler.handleCallback(Handler.java:733)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at android.os.Handler.dispatchMessage(Handler.java:95)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at android.os.Looper.loop(Looper.java:146)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at android.app.ActivityThread.main(ActivityThread.java:5748)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at java.lang.reflect.Method.invokeNative(Native Method)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at java.lang.reflect.Method.invoke(Method.java:515)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
01-27 09:21:31.761: E/AndroidRuntime(3390): 	at dalvik.system.NativeStart.main(Native Method)

현재 이러 로그가 찍히는 상황은 썸네일뷰에 이미지까지 출력이 되는데 동영상 클릭시 앱중지와 동시에 뜨는 로그입니다.

우기왕 (1,520 포인트) 님이 2015년 1월 27일 답변
썸네일 클릭시 동영상재생으로 가는것이죠?
재생할 동영상의 url이 문제인거 같은데
이 url을 올려보셔요
추가적으로 이 에러 로그 발생전에
01-27 09:27:53.181: W/ContextImpl(4696): Implicit intents with startService are not safe: Intent { act=com.google.android.youtube.api.service.START } android.content.ContextWrapper.bindService:530 com.google.android.youtube.player.internal.r.e:-1 com.google.android.youtube.player.YouTubeThumbnailView.initialize:-1
이것이 warning이 나네요..
final String videoUrl = "http://www.youtube.com/watch?v=dp2bwpsJE1Y";
                int idx = videoUrl.lastIndexOf("=");
                final String videoId = videoUrl.substring(idx + 1);
이런식으로 videoid값을 구해와서 처리하는 방식이거든요..
그리고 혹시 url이 잘못됐으면 썸네일이 안뜨지 않나요?
0 추천
public Object instantiateItem(View pager, int position) {
			View v = null;
			if (position == 0) {
				v = mInflater.inflate(R.layout.text_content_page, null);
			} else if (position == 1) {
				v = mInflater.inflate(R.layout.image_content_page, null);
			} else if (position == 2) {
				v = mInflater.inflate(R.layout.video_content_page, null);
				final String videoUrl = "http://www.youtube.com/watch?v=dp2bwpsJE1Y";
				int idx = videoUrl.lastIndexOf("=");
				final String videoId = videoUrl.substring(idx + 1);

				YouTubeThumbnailView videoView = (YouTubeThumbnailView) v.findViewById(R.id.videoView);

				videoView.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						Intent intent = YouTubeStandalonePlayer.createVideoIntent(getParent(), Utils.DEVELOPER_KEY, videoId, 0, true, false);
						startActivityForResult(intent, RECOVERY_DIALOG_REQUEST);
					}
				});

				videoView.initialize(Utils.DEVELOPER_KEY, new OnInitializedListener() {

					@Override
					public void onInitializationSuccess(YouTubeThumbnailView arg0, YouTubeThumbnailLoader thumbnailLoader) {
						thumbnailLoader.setVideo(videoId);
					}

					@Override
					public void onInitializationFailure(YouTubeThumbnailView arg0, YouTubeInitializationResult arg1) {

					}
				});

			}
((ViewPager) pager).addView(v, 0);

			return v;
		}

현재 뷰페이지부분 소스는 이렇게 되있습니다.

우기왕 (1,520 포인트) 님이 2015년 1월 27일 답변
...