본문 바로가기
공부기록/안드로이드

안드로이드에서 유튜브 재생하기 구현(api 미사용)

by 책읽는 개발자 ami 2021. 1. 24.
728x90
반응형

제 프로젝트에는 아래와 같이 적용되어 있습니다.

속도가 느린 이유는 셀레니움으로 드라이브를 여는 것 때문 ㅠㅠ 속도 개선 방법을 못찾겠다 ...

 

 

원래는 유튜브 api 를 써야된다고 하는데, 좀더 간단한 방법이 없을까 하다 찾은 라이브러리


implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:10.0.5'

 

build.gradle에 추가하면 된다.

 

자세한 사용방법은 아래 깃허브를 확인해주세요

github.com/PierfrancescoSoffritti/android-youtube-player

 

PierfrancescoSoffritti/android-youtube-player

YouTube Player library for Android and Chromecast, stable and customizable. - PierfrancescoSoffritti/android-youtube-player

github.com

기본적으로 xml에서 사용할 때는 아래와 같이 쓰면 된다.

<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">
    <com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
        app:videoId="giQE_5yiG_A"
        app:autoPlay="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

만약 유튜브 주소가 www.youtube.com/watch?v=giQE_5yiG_A 라고 하면 v= 다음의 문자가 비디오 아이디가 된다.

 

하지만 내 목표는 크롤링한 영상을 삽입하는 거라 자바로 넣기로 했다.

일단 layout을 준비한다.

<ScrollView
        android:id="@+id/recipe_view_scrollView"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:gravity="center"
            android:id="@+id/recipe_view_linearLayout"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </LinearLayout>
</ScrollView>

java 코드 - 필요한 부분만 가져와봤다.

public class RecipeViewActivity extends AppCompatActivity {
    private LinearLayout recipeViewLinearLayout;
    protected void onCreate(Bundle savedInstanceState) {
        recipeViewLinearLayout = findViewById(R.id.recipe_view_linearLayout);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params.bottomMargin = 30;
        YouTubePlayerView ypv = new YouTubePlayerView(RecipeViewActivity.this);
        ypv.setLayoutParams(params);
        recipeViewLinearLayout.addView(ypv);
        getLifecycle().addObserver(ypv);
        ypv.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
            @Override
            public void onReady(@NotNull YouTubePlayer youTubePlayer) {
            	youTubePlayer.loadVideo("비디오 아이디",0);
            }
        });
   }
}

 

- 자바로 View를 그리기 위해선 Layout 파라미터가 필요하다.

- 레이아웃에 추가할 YouTubePlayerView를 생성한다. 이때 인자에 컨텍스트를 넣어준다.

- 모든 준비가 끝났다면 레이아웃에 ypb를 추가한다.

- 라이프사이클에 YouTubePlayerView를 추가하는 건 공식 doc에 추천한다고 나와있다.

   LifecycleObserver에 추가하면 Acitivity나 Fragment가 stop일 때 자동으로 정지한다고 한다.

   말하자면 관리가 쉬워진다는 것 같다.

- 마지막으로 YouTubePlayerView에 리스너를 부착하면 된다. 이때 필요한 건 비디오 아이디 뿐이다!

 

https://github.com/PierfrancescoSoffritti/android-youtube-player

 

https://github.com/PierfrancescoSoffritti/android-youtube-player#lifecycleobserver

이렇게 간단하게 유튜브를 안드로이드에서 재생하는 방법을 알아봤다.

api는 안써봤지만, 이 라이브러리가 속도도 괜찮고 사용하기도 쉬워서 .. 개발자분 복받으세요 ..!

728x90
반응형