제 프로젝트에는 아래와 같이 적용되어 있습니다.
속도가 느린 이유는 셀레니움으로 드라이브를 여는 것 때문 ㅠㅠ 속도 개선 방법을 못찾겠다 ...
원래는 유튜브 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에 리스너를 부착하면 된다. 이때 필요한 건 비디오 아이디 뿐이다!
이렇게 간단하게 유튜브를 안드로이드에서 재생하는 방법을 알아봤다.
api는 안써봤지만, 이 라이브러리가 속도도 괜찮고 사용하기도 쉬워서 .. 개발자분 복받으세요 ..!
'공부기록 > 안드로이드' 카테고리의 다른 글
[안드로이드] Fragment to Fragment 데이터 쉽게 전달하기(자료형이 List 일 때) (0) | 2021.01.27 |
---|---|
[JSOUP사용법] 웹(HTML) JSOUP으로 파싱하기 (웹-안드로이드 연동/네이티브앱) (0) | 2021.01.27 |
안드로이드 RecyclerView를 이용해 이미지 게시판 만들기(인스타그램 따라해보기) (0) | 2021.01.25 |
안드로이드 프래그먼트 안에 프래그먼트 - 인스타그램처럼 만들기 (0) | 2021.01.25 |
안드로이드 MaterialAlertDialog 어댑터 적용해서 팔로워 리스트 보여주기 (0) | 2021.01.25 |