영상 목록도 진단테스트와 마찬가지로 ListView를 이용하여 Adapter 패턴을 적용했다.
영상 시청 화면으로 이동하면 유튜브 영상 플레이어와 (YouTubePlayerView 이용) 누적 시청 시간을 나타내는 seekbar을 확인할 수 있다.
영상 시청 시간을 체크하도록 구현하는 부분이 생각보다 어려웠는데
단순히 현재의 영상 타임라인을 구하는 것은 쉽지만만약 제대로 시청하지 않고 타임라인을 건너뛰어서 영상의 맨 뒤로 이동하면 그것을 알 수 있는 방법이 없었기 때문이다.
따라서 나는 스레드를 이용해서 직접 이 코드를 구현했다.
영상 시청 화면 액티비티는 YouTubeBaseActivity를 상속받았고YoutubePlayerView에 setPlaybackEventListener, setPlayerStateChangeListener를 설정하여영상 재생 상태와 사용자로 인한 이벤트에 대한 처리를 할 수 있었다.
👇
이것과 스레드를 이용해서 만든 누적 시청 시간 카운터를 연결했다.카운터는 1초에 1번씩 영상 재생 상태를 확인하여 누적 시간을 카운트한다.
👇
최대한 YouTube API 자체에서 제공하는 메소드를 활용하고 싶었는데
이 부분은 아무리 구글링해봐도 실제 누적 시청 시간을 구하는 코드가 없는 것 같았다.
(혹시나 저와 같은 어려움을 겪고 있는 개발자분이 있으시다면 제 코드를 참고해보시길...!)
그렇게 정직하게 영상을 끝까지 시청해야만 마음 온도가 5점씩 오르고,
60점을 달성하면 위와 같은 팝업창으로 사용자에게 기능 해제를 알리도록 구현했다.
게시판 카테고리 세분화
기존 게시판은 자유게시판과 익명게시판으로 나뉘어져서 익명게시판은 댓글이 없다는 점에서 차이가 있었다.
그런데 이렇게 게시판을 나누는 것은 사용자 입장에서 큰 의미가 없을 것 같아서
게시판을 어떻게 수정할까 고민하다가 카테고리를 조금 더 늘리기로 했다.
질문, 꿀팁 게시판이 추가되어 게시판 카테고리가 총 4개로 늘었다.
원래는 마음 온도에 따라 기능 제한을 할 때 일부 카테고리만 제한 or 댓글 작성만 제한하는 것으로 얘기를 했었는데
다시 회의를 거쳐서 기능 제한 시에는 게시판 자체를 접근하지 못하는 것으로 계획을 변경했다.
그게 개발자 입장에서 구현할 때 가장 편한 방법이기도 하고
사용자 입장에서 댓글을 달지 못하더라도 게시글 내용을 확인할 수 있으면
기능 제한을 해제하기 위해 마음 채우기 기능을 이용하고 싶다는 동기부여가 되지 않을 것 같았기 때문이다.
알림 기능
앱이 전체적으로 정적이라는 생각이 들어서, 어떻게 하면 동적으로 만들 수 있을까 고민해보니
기능 제한 또는 내 게시글에 새로운 댓글이 추가되었다는 것을 알리는 알림 기능의 구현이 필요해보였다.
회원가입 / 댓글 달렸을 때 / 마음 온도 60점 달성 시 알림이 추가되도록 했고
알림을 길게 누르면 개별 알림 삭제가 가능하도록 했다.
기타 개선 사항
일기장, 게시판에 등록된 이미지 확대 기능 (image-zoom-view 라이브러리 활용)
게시판 레이아웃 보완, 유효성 검사
디버깅 및 오류 픽스 (댓글 알림을 클릭해서 해당 게시글로 이동했을 때 DB에서 공감 수를 제대로 받아오지 못하는 현상 해결 등)
8월 개발 일지 목록
8/1 ~ 8/2 (로딩 화면 DB 데이터 조회 문제 해결, 챗봇에서 일기장으로 이동)
8/6 (마음 온도 산출, 마음 채우기 안내, 메인화면 디자인 보완)
8/8 (YouTube API 적용 완료, 챗봇 링크 활성화, 게시판 카테고리 세분화, 게시판 기능 제한)