티스토리 뷰
최근 Material Design을 반영하고자 하거나 그렇지 않거나 필연적으로 많이 쓰는 리스트는 단연코 RecyclerView일 것이다. 또, 누구나 예쁜, 본 적 있는 content design을 위해 CardView를 많이 이용하는 것도 부정할 수 없을 것이다.
오늘은 진행중인 프로젝트에 CardView를 이용한 리스트를 구성하는 중 YouTubePlayerView를 삽입하는 과정에서 겪었던 문제들과 해결 방법에 대해 적어보고자 한다.
먼저, 구현하고자하는 모습은 배달의민족 '뭐먹지' 탭에서 확인할 수 있다.
가장 먼저 검색할 내용은 Android YouTube API였다.
그렇지만 첫 검색 결과로 나오는 'YouTube Android Player API - Google Developers'보다 눈에 들어오는 세 번째 포스트가 있었다.
'헤이딜러'라는 애플리케이션을 개발하는 PRND의 기술 블로그였던 것 같다. 제목은 누구도 들어가지 않고는 못 베길 내용.
https://medium.com/prnd/youtube-player-api를-사용하면-안되는-이유-3가지-c1a01321bf2
누가 들어가지 않고 API 기술 명세부터 보고 있겠는가, 당연히 읽어보았다.
내용은 대충 Google에서 제공하는 YouTube API가 엄청 낡았다는 것과 AndroidX를 사용하는 프로젝트에서 적용할 수 없다는 것. AndroidX를 지원할 것 같이 생긴 이름의 Fragment가 있긴 했지만 일단 안 된다고 하니 내가 삽질 할 이유는 없겠지.
그래서 직접 YouTubePlayerView를 구현했다고 한다. 저런 분들이 정말 세상이 원하는 프론트엔드 개발자일 것이 분명한데..
웬걸 내 프로젝트에는 그대로 적용해도 사용할 수 없었다. 아래의 오류만 나를 반길 뿐이었다.
- java.lang.IllegalStateException: Disk cache storage path already in use
분명 똑같이 했음에도 불구하고 오류가 생긴하는 것은 있을 수가 없는 일임을 누구나 알고 있지만 그 오류가 발생하는 것이 이 바닥 아니겠는가, 문제를 찾아보고 해결해보고자 했음에도 도저히 알맞는 해결책을 찾을 수 없었다.
더구나 Google에서 제공하는 기본 API 상태도 아닐 뿐더러 누구에게 가서 묻겠는가, 다른 방법을 찾아보기로 했다.
직접 YouTube Android Player API를 이용하여 Fragment를 삽입해보고, Fragment의 YouTubePlayerView만 reflection해보고 별 짓을 다 하던 와중 재밌는 라이브러리를 찾았다.
PRND에서 제공하는 라이브러리처럼 해외에서도 누군가는 같은 고민을 했던 것 같다.
https://github.com/PierfrancescoSoffritti/android-youtube-player
얼핏봐서 PRND의 라이브러리와 다를 것도 없어 보이지만 놀랍게도 오류가 나타나지 않는다.
PRND의 라이브러리와 마찬가지로 개발자 ID를 필요로 하지 않는다는 것도 신기한 점. 이 부분은 언젠가 공식 Android API가 개선되면서 고쳐지겠지만 그때면 이런 라이브러리도 필요로 하지 않으면서 사용할 수 있을 것이다.
그렇게 적용한 예제는 다음에서 확인할 수 있다.
https://github.com/NoDEAL/YouTube-RecyclerView-Example
정말 별 기능이 들었다기도 부끄러울 정도의 라이브러리의 예제 수준이다. 어쩌면 Pierfrancesco Soffritti의 예제에서도 찾을 수 있을 지 모르지만 당장 내가, 또 읽고 있는 당신에게 필요할 기능이 무엇이었던가! 우린 리스트에 어떻게 YouTube 영상을 꾸역꾸역 넣을 수만 있으면 된다.
모든 내용은 평소 다른 RecyclerView와 CardView를 이용하는 방법과 같다. 복잡하고 다양한 View를 가진 예제보다 훨씬 쉬울 것으로 기대된다.
정말 오랜만에 쓰는 포스트인데, 그저 다른 누군가가 하루를 꼬박 들여 삽질하질 않길 바라며 한글로 된 검색 결과를 하나라도 더 볼 수 있길 바라며 마무리짓고자 한다.
예제에서 볼 수 있는 YouTube 영상은
- 헤이즈 (Heize) - And July (Feat. DEAN, DJ Friz) MV: https://www.youtube.com/watch?v=rCeM57e2BfU (videoId=rCeM57e2BfU)
- 로꼬 (Loco) - Party Band + OPPA https://www.youtube.com/watch?v=ieZ_qkyhLwU (videoId=ieZ_qkyhLwU)
이 두가지, 그냥 나오던 노래였다.
- Total
- Today
- Yesterday
- Kotlin
- LG
- C++
- PipelineContext
- dokdo project
- inline class
- rule_of_five
- nodeal
- f320s
- CM10.2
- 포인터
- C++ 업캐스팅
- OOP
- CM11
- linaro
- 객체지향
- C
- dokdo-project
- cyanogenmod
- rule_of_three
- c++ struct
- c++11
- G2
- dokdo 4.0.3
- f320k
- g2 korea
- vector
- c++ 상속
- Java
- d802
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |