키즈 토피아는 Youtube Data API v3를 사용하여 키즈 카테고리의 비디오를 검색 및 저장할 수 있는 키즈 앱입니다.
- 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
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
- Home
- 인기 동영상 -> vidio 엔드 포인트
- chart 필터 이용하여 인기 동영상을 불러옴
- 카테고리 영상 -> Search 엔드 포인트
- Spinner 내부에 카테고리 선택시 관련된 영상을 불러 옵니다
- 카테고리 채널 -> Channel 엔드 포인트
- 카테고리 영상의 채널 ID를 Channel 엔드포인트로 보내서 해당 Channel을 나오게 함.
- 가져온 영상들은 조회수 순으로 가져왔습니다
- 인기 동영상 -> vidio 엔드 포인트
- Detail
- 상단에 해당 영상의 썸네일을 띄움 (Glide 활용)
- 썸네일 하단에 비디오 정보가 담겨있는 박스를 배치
- 동영상 클릭 시 ➜ 채널명, 동영상 제목, 동영상 설명
- 채널 클릭 시 ➜ 구독자 수, 채널명, 채널 설명
- ConstraintHeight_percent 활용하여 화면 비율에 따른 높이 구현
- 박스 상단에 재생 버튼으로 해당 동영상 링크 이동
- 하단에 재밌어요 버튼으로 좋아요 처리
- Room db에 해당 동영상 정보 저장
- 이미 저장되어 있는 영상은 정보 삭제 처리
- 각 상황마다 다른 Toast 표출하여 구분
- Search
- YouTube Data API의 search 엔드포인트 이용
- Network Client, SearchInterface, SearchData
- 앱 컨셉에 맞게 검색 시 videoCategoryId를 설정 (15)
- YouTube Data API의 search 엔드포인트 이용
- 검색 방법 3가지 구현
- (1) 검색어가 갱신될 때마다 자동 검색
- (2) 검색 버튼 없이 키보드의 엔터로 작동 ➜ 선택
- (3) 검색 버튼 추가 후 클릭 시 작동
- 키워드 클릭 시 해당 키워드로 바로 검색되도록 구현
- RecyclerView로 검색 결과 출력
- 영상 클릭 시 Detail Fragment로 이동
- MVVM으로 구현 (SearchViewModel, Repository)
- HandleException 메소드를 만들어 네트워크 오류 처리
- My Video
- 방문한 페이지 Room db에 저장
- 재밌어요 누른 동영상 Room db에 저장
- NestedScrollView 사용해서 RecyclerView 함께 스크롤 되게 합니다
- DataStore로 간단한 데이터 저장
| # | 문제 상황 | 상세내용 |
|---|---|---|
| 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에서 핸드폰 네비게이션 바와 영역이 겹치는 문제 | 이동 |










