Youtube 영상 재생하기
유튜브에 있는 동영상을 어떻게 하면 재생할 수 있을까?
구글에서는 유튜브의 동영상을 재생할 수 있는 API를 제공한다.
이 API를 이용하면 동영상 재생 및 녹화를 진행할 수 있다.
예제
API를 사용할 수 있도록 도와주는 jar 파일을 추가해야 하므로 [Project Files]로 변경한다.
프로젝트 폴더 안에 있는 폴더와 파일이 파일 탐색기의 경로처럼 나타난다.
jar 파일은 YouTube API를 제공하고 아래 사이트에서 다운로드 받을 수 있다.
https://developers.google.com/youtube/android/player/downloads/
압축을 풀면 libs 폴더 안에 jar 파일이 하나 들어 있는데 아래와 같이 복사해서 넣습니다.
라이브러리 파일을 추가 했으니 의존성을 추가 해준다.
build.gradle(Module: name)
1
2
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
인제 YouTubePlayerVIew를 추가 해주기 위해 activity_main.xml 파일을 수정 해준다.
activity_main.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="시작" />
<com.google.android.youtube.player.YouTubePlayerView
android:id ="@+id/playerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
YouTubePlayerVIew 초기화하고 버튼을 눌렀을 때 동작하게 해주기 위해 MainActivity.java 파일을 작성하자.
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package org.techtown.youtube;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;
public class MainActivity extends YouTubeBaseActivity{
YouTubePlayerView playerView;
YouTubePlayer player;
private static String API_KEY = "Input Your API KEY";
private static String videoId = "qVxTd_8jfNY";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initPlayer();
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
playVideo();
}
});
}
public void initPlayer(){
playerView = findViewById(R.id.playerView);
/* YouTubePlayerView 초기화 하기 */
playerView.initialize(API_KEY, new YouTubePlayer.OnInitializedListener(){
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer youTubePlayer, boolean b){
player = youTubePlayer;
player.setPlayerStateChangeListener(new YouTubePlayer.PlayerStateChangeListener() {
@Override
public void onLoading() {}
@Override
public void onLoaded(String id) {
Log.d("PlayerView", "onLoaded 호출됨: " + id );
player.play(); // 동영상이 로딩되었으면 재생하기
}
@Override
public void onAdStarted() {}
@Override
public void onVideoStarted() {}
@Override
public void onVideoEnded() {}
@Override
public void onError(YouTubePlayer.ErrorReason errorReason) {}
});
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider,
YouTubeInitializationResult youTubeInitializationResult){}
});
}
public void playVideo(){
if(player != null){
if(player.isPlaying())
player.pause();
}
player.cueVideo(videoId);
}
}
액티비티는 YouTubeBaseActivity를 상속 받도록 한다.
API_KEY는 https://console.developers.google.com/apis 에서 받을 수 있다.
videold 변수에는 재생할 동영상의 id 값을 할당한다.
동영상 id는 재생하고 싶은 동영상을 유튜브에서 찾아 사이트 주소에 포함되어 있는 id 값을 확인할 수 있다.
initialize
메서드를 호출할때 첫 번째 매개 변수로 API 키값, 두 번째는 OnInitializationListener
객체를 전달한다.
이 객체는 초기화가 성공적으로 수행되었을 때 onInitializationSucces
s 메서드를 호출해준다.
이 메서드가 호출되면 YouTubePlayer 객체가 전달되므로 객체를 변수에 할당해 준다.
그리고 YouTubePlayer 객체의 setPlayerStateChangeListener
메서드를 호출하여 리스너 객체를 등록하면 Player 상태가 어떻게 바뀌는지 확인할 수 있다.
onLoaded
메서드는 동영상이 로딩되었을 때 자동으로 호출되므로 그 안에서 Player 객체의 play
메서드를 호출한다.
유튜브 동영상을 재생하기 위해서는 인터넷 권한이 필요하므로 아래와 같이 권한을 추가한다.
AndroidManifeset.xml
1
2
3
4
5
6
7
8
<uses-permission android:name="android.permission.INTERNET"/>
<queries>
<intent>
<action android:name="com.google.android.youtube.api.service.START" />
</intent>
</queries>
<quries> 태그는 유튜브 라이브러리를 초기화하는데 필요하므로 추가 해주자.
결과