[Android/Kotlin 10] 유튜브 API를 활용한 동영상 미디어 앱 만들기

이다을·2023년 9월 24일
0

🔗풉튜브(PoopTube) 깃헙 바로가기💩

이번 팀프로젝트의 팀명은 똥멍청이의 반란입니다. 팀명의 '응가(Poop)'와 미디어를 보며 재밌어서 '풉풉' 웃는 모습의 이중적인 의미를 담은 컨셉으로, YouTube Data API v3을 이용하여 가장 인기있는 동영상과 카테고리별 영상 목록을 보여주고, 키워드로 동영상 검색을 할 수 있습니다. 또 각 디테일 페이지에서는 좋아요를 누른 동영상을 내 채널에 북마크 할 수 있습니다.




기능 리스트

⚡효율적인 Fragment UI 관리

  • 주요 3개의 화면을 효과적으로 관리하고, 사용자에게 최적화된 경험을 제공하기 위해 적절한 Fragment 관리 위젯을 선택하고 구현
1. Navigation Component
Fragment 간의 전환, 데이터 전달, 반환 값 관리 등을 매우 단순화하고 시각적으로 제공

2. ViewPager2
fragment들을 수평 혹은 수직으로 스와이프하여 전환하는 UI 패턴을 구현할 수 있게 해주는 위젯

3. BottomNavigationView or TabLayout
주로 하단 탭 혹은 상단 탭을 통해 여러 Fragment 간의 빠른 전환이 필요할 때 사용

⚡Retrofit을 활용한 YouTube API 데이터 연동

  • YouTube Data API v3 서비스를 활성화
  • API key값을 받아 안드로이드 앱 내에 안전하게 저장해 사용
  • Retrofit을 활용하여 YouTube API와 앱 연동
  • YouTube Data API v3를 이용하여 필요한 비디오 정보를 앱 내에서 요청하고 결과 받기
  • 받아온 비디오 데이터는 앱 내 UI 요소에 동적으로 출력
  • API 호출 과정에서 발생하는 가능한 오류 상황들을 예측하고, 적절한 에러 처리 기법을 구현

⚡홈 화면 (HomeFragment)

  • Most Popular Videos 목록을 스크롤이 가능한 RecyclerView 형태로 나열하여 출력
  • YouTube의 현재 Trend 비디오 목록을 출력
  • videos 엔드 포인트에 chart=mostPopular 파라미터를 사용하여 최신 인기 비디오 목록을 획득

⚡비디오 검색 (SearchFragment)

  • 상단에는 검색을 위한 Search EditText를 배치하고, 그 아래에 검색 결과를 출력할 RecyclerView를 배치
  • YouTube Data API v3의 search 엔드 포인트를 활용하여, 검색 쿼리 기반으로 비디오 정보를 획득
  • 오류 및 예외 처리: 네트워크 오류, API 호출 제한, 검색 결과 없음 등의 예외 상황을 고려하여 사용자에게 적절한 메시지를 표시

⚡상세 정보 (VideoDetailFragment or VideoDetailAcitvity)

  • 각 비디오 아이템 선택시 Detail로 이동하여 선택된 비디오의 상세 정보를 제공
  • 비디오 상세 정보 아래에 "좋아요" 버튼을 추가, 사용자가 버튼을 클릭하면 해당 비디오 정보가 내부(SharedPreference)에 저장
  • "좋아요"를 누른 비디오 정보는 My Videos에서 조회 가능

⚡마이 페이지 (MyVideoFragment)

  • 사용자의 프로필 사진, 이름 등의 개인 정보를 상단에 표시
  • ‘좋아요’를 누른 비디오 목록은 RecyclerView를 사용해 아래쪽에 목록 형태로 출력
  • "좋아요" 버튼을 통해 추가된 비디오는 내부(SharedPreference)에 저장되어야 하며, MyVideoFragment에서는 이 정보를 가져와서 표시



내가 구현한 기능

⚡SearchFragment

  • Search EditText와 검색 버튼 배치하고, 결과를 RecyclerView 목록에 출력
  • YouTube Data API v3의 Search 엔드 포인트를 활용한 검색 키워드 비디오 목록 출력
  • Chip을 통해 검색한 키워드 안에서 카테고리별 비디오 재조회

⚡MyVideoFragment

  • 사용자의 프로필 사진, 이름 등의 개인 정보를 상단에 표시
  • Bundle로부터 비디오 데이터를 가져와 바인딩한 결과를 RecyclerView 목록에 출력
  • SharedPreferences를 사용하여 저장된 상태 불러오기



UI 레이아웃

KPT 회고

누가 내 이만하면 됐다에 똥색으로 강조를 해놨다 ㅋㅋㅋㅋㅋ
알아.. 안다구요.. 그러면 안된다는 걸.. ㅠ (흐린눈)

굿 메모리 ~~

profile
나도 개발 할래

1개의 댓글

comment-user-thumbnail
2023년 10월 29일

아이콘이 귀엽네요 :)

답글 달기