Android 공부

안드로이드 유튜브 플레이어 예제

안드로이드 유튜브 플레이어 홈페이지


프로젝트의 gradle 3.1.4에서 진행되고 있고

Kotlin과 Retrofit을 기반으로 프로젝트가 진행될 것 입니다.


https://developers.google.com/youtube/android/player/?hl=ko 를 접속합니다.

해당 홈페이지는 youtube에 관련된 api가 정리된 doc입니다.




들어가게 되면 Orerview 밑에 '다운로드'가 보입니다.


다운로드 현재 버전은 2018년 10월 24일 기준으로 1.2.2 버전을 사용하고 있습니다.

zip을 다운로드하고 압축을 한 번 풀어줍니다.

저는 압축을 안 풀어줘서 왜 안되나 했습니다ㅜㅜ



압축파일에는 YouTubeAndroidPlayerApi.jar라는 것이 있습니다.

해당 파일을 안드로이드 스튜디오의 Dependencies에 추가해 줄 것입니다.


이제 안드로이드 스튜디오로 돌아와서


File - Project Structure에 추가 해줍니다.

Add를 눌러주고 Jar Dependency를 눌러주고 이전에 풀어놓은 jar를 추가해서 디펜던시를 추가해줍니다.

안드로이드스튜디오의 gradle을 들어가보면  implementation files('libs/YouTubeAndroidPlayerApi.jar') 이 추가된 것을 볼 수 있을 것 입니다.

하지만 API를 사용하기 위해서는 자신의 안드로이드 스튜디오의 프로젝트를 api에 연결시켜야 합니다.


https://console.developers.google.com/apis/credentials?hl=ko

해당 url을 들어가줍니다. 이곳은 credential을 추가할 수 있는 페이지로서 사용자 인증 정보를 추가할 수 있습니다.



밑에는 제가 만들어 놓은 API키 리스트들이고

해야하는 것은 

[사용자 인증 정보 만들기 - API 키]

입니다.


이렇게 API키가 만들어집니다.


추후엔 해당 API키를 복사해서

Android Studio의 String xml에 넣어서 관리할 것 입니다.


2018/10/24 - [Android 공부] - 안드로이드 gitignore 예제


해당 게시글처럼 xml에 집어넣어 api를 관리할 것 입니다.

youtube_key라는 변수에 api 키값을 넣었습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    tools:context=".Activity.YoutubePlayerActivity">
    <com.google.android.youtube.player.YouTubePlayerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/youtube_view"/>
</LinearLayout>
cs

유튜브 화면을 호출할 xml을 만들어줬고 activity_youtube_player.xml 입니다.

1
<uses-permission android:name="android.permission.INTERNET" />
cs


혹시 모르니 manifests에 인터넷 퍼미션을 하나 넣어줬습니다.

그리고 Activity에는 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class YoutubePlayerActivity : YouTubeBaseActivity(), YouTubePlayer.OnInitializedListener {
    override fun onInitializationFailure(p0: YouTubePlayer.Provider?, p1: YouTubeInitializationResult?) {
        TODO("not implemented"//To change body of created functions use File | Settings | File Templates.
    }
 
    override fun onInitializationSuccess(p0: YouTubePlayer.Provider?, youtubePlayer: YouTubePlayer?, isReady: Boolean) {
        if (!isReady) {
            val playKey = intent.getStringExtra("playKey")
            youtubePlayer!!.cueVideo(playKey);
        }
    }
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_youtube_player)
        youtube_view.initialize(getString(R.string.youtube_key), this@YoutubePlayerActivity)
    }
}
cs


JAVA 기준으로 해석하자면 youtube_view를 findviewById를 해주고 난 후에

해당 view를 initialize를 해준 후에 R.string.youtube_key를 호출해주고, context를 입혀줍니다.

그리고 YouTubePlayer.OnInitializedListener를 상속받아서

onInitialiizationSuccess에 호출할 youtubePlayer의 key를 받아서 youtubePlayer객체를 오버라이드

받은 것을 cueVideo를 해주게 됩니다. 


해당 내용은 2탄에서 더 상세하게 다루겠습니다.


1인 개발자 감자튀김 입니다.

다이어리 어플리케이션과 시간표 어플리케이션을

출시해서 관리하고 있습니다.


2018/10/21 - [나의 일기] - (리뷰) 시간표 어플리케이션 - 담다

2018/07/15 - [나의 일기] - #담아두다 #일상 #다이어리 #어플리케이션