Skip to content

Kid-Topia/KidsTopia

Repository files navigation

image

🖥️ 프로젝트 소개

키즈 토피아는 Youtube Data API v3를 사용하여 키즈 카테고리의 비디오를 검색 및 저장할 수 있는 키즈 앱입니다.

🕰️ 개발 기간 (24.04.22일 - 24.04.28일 )

  • 24.05.13 : 프로젝트 S.A 작성, Figma 와이어프레임 작성, 깃허브 Organization, Repository 생성,
  • 24.05.14 - 24.05.17 : 각 프래그먼트 기능 구현
  • 24.05.18 - 24.05.21 : 스피너,다이얼로그 생성 및 뷰모델 전환
  • 24.05.21 - 24.05.23 : UI추가 잡업 및 코드 수정, README 작성, 발표 자료 제작

👨‍👨‍👧‍👦 맴버 구성

  • 남형주(팀장) - 발표 자료 작성, 타임 매니저(팀 일정관리)
  • 임희진(부팀장) - Notion 작성 및 팀 계획/회고 기록, 발표 자료 작성
  • 마해인(팀원) - 발표 자료 작성, 발표 자료 취합
  • 임봉규(팀원) - 발표 자료 작성, 영상 제작, Git 관리자
  • 김주현(팀원) - 발표, README.md 작성, 발표 자료 작성

⚙️ 개발환경

  • Programming Language : Kotlin
  • IDE : Android Studio
  • Compile SDK Version : 34
  • Minimum SDK Version : 26
  • Target SDK Version : 34
  • Version Code : 1
  • Version Name : 1.0

프로젝트 핵심 기술

image


📖 프로젝트 구조

C:.
├─java
│  └─com
│      └─kidstopia
│          └─kidstopia
│              ├─model
│              │  └─database
│              ├─presentation
│              │  ├─activity
│              │  ├─adapter
│              │  ├─fragment
│              │  └─network
│              ├─repository
│              └─viewmodel
└─res
    ├─anim
    ├─drawable
    ├─font
    ├─layout
    ├─menu
    ├─mipmap-anydpi
    ├─mipmap-anydpi-v26
    ├─mipmap-hdpi
    ├─mipmap-mdpi
    ├─mipmap-xhdpi
    ├─mipmap-xxhdpi
    ├─mipmap-xxxhdpi
    ├─values
    ├─values-night
    └─xml  

📖 와이어프레임

image image image image image image

🔎 페이지별 기능

  • Home
    • 인기 동영상 -> vidio 엔드 포인트
      • chart 필터 이용하여 인기 동영상을 불러옴
    • 카테고리 영상 -> Search 엔드 포인트
      • Spinner 내부에 카테고리 선택시 관련된 영상을 불러 옵니다
    • 카테고리 채널 -> Channel 엔드 포인트
      • 카테고리 영상의 채널 ID를 Channel 엔드포인트로 보내서 해당 Channel을 나오게 함.
      • 가져온 영상들은 조회수 순으로 가져왔습니다


  • Detail
    • 상단에 해당 영상의 썸네일을 띄움 (Glide 활용)
    • 썸네일 하단에 비디오 정보가 담겨있는 박스를 배치
      • 동영상 클릭 시 ➜ 채널명, 동영상 제목, 동영상 설명
      • 채널 클릭 시 ➜ 구독자 수, 채널명, 채널 설명
    • ConstraintHeight_percent 활용하여 화면 비율에 따른 높이 구현
    • 박스 상단에 재생 버튼으로 해당 동영상 링크 이동
    • 하단에 재밌어요 버튼으로 좋아요 처리
      • Room db에 해당 동영상 정보 저장
      • 이미 저장되어 있는 영상은 정보 삭제 처리
      • 각 상황마다 다른 Toast 표출하여 구분


  • Search
    • YouTube Data API의 search 엔드포인트 이용
      • Network Client, SearchInterface, SearchData
      • 앱 컨셉에 맞게 검색 시 videoCategoryId를 설정 (15)
  • 검색 방법 3가지 구현
    • (1) 검색어가 갱신될 때마다 자동 검색
    • (2) 검색 버튼 없이 키보드의 엔터로 작동 ➜ 선택
    • (3) 검색 버튼 추가 후 클릭 시 작동
  • 키워드 클릭 시 해당 키워드로 바로 검색되도록 구현
  • RecyclerView로 검색 결과 출력
  • 영상 클릭 시 Detail Fragment로 이동
  • MVVM으로 구현 (SearchViewModel, Repository)
  • HandleException 메소드를 만들어 네트워크 오류 처리


  • My Video
    • 방문한 페이지 Room db에 저장
    • 재밌어요 누른 동영상 Room db에 저장
    • NestedScrollView 사용해서 RecyclerView 함께 스크롤 되게 합니다
    • DataStore로 간단한 데이터 저장

Trouble Shooting

# 문제 상황 상세내용
1 bottom navigation을 가리는 것이 무엇인지 알 수 없는 문제 이동
2 SearchFragment에서 DetailFragment로 이동 후 돌아왔을 때, 검색시 본 화면과 데이터가 유지되지 않는 문제 이동
3 Search 엔드포인트 값의 문제 이동
4 ViewModel 구현 중 문제 및 API Key 오류 이동
5 DetailFragment Room 관련 수정 후 toast 띄울 수 없는 문제 이동
6 DetailFragment description TextView 잘림 문제 이동
7 Migation 할 시에 주의점 및 문제점 이동
8 Spinner사용 이후 아이템 클릭 후 뒤로가기 했을 때 어플이 꺼지는 문제 이동
9 DetailFragment 들어갔다 나왔을 때 기존 프래그먼트가 새로고침 되지 않고 그대로 유지 되지 않는 문제 이동
10 MyVideo 좋아요 누른 영상이 바로 반영되지 않는 문제 이동
11 DetailFragment에서 핸드폰 네비게이션 바와 영역이 겹치는 문제 이동

About

Youtube API를 사용한 키즈토피아 프로젝트입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages