8월의 주요 개발 목표는 다음과 같았다.
- 테스트 결과 게시판 기능 제한
- 교화 프로그램 시청 (마음 채우기 = 유튜브 영상 시청)
- 알림 기능 추가
- 기타 레이아웃 보완 및 디버깅
테스트 결과 기능 제한
학교폭력 진단테스트 결과를 바탕으로 마음 온도를 산출한다.
마음 온도가 낮은 사용자는 학교폭력 관련 영상 (교화 프로그램) 시청을 통해 마음 온도를 높이고
60점 이상을 달성해야 게시판 기능을 이용할 수 있게 제한하도록 구현했다.
테스트 결과 가해 정도에 따라 마음 온도가 산출되는데
이때 마음 온도가 60점 보다 낮으면 마음 채우기 안내 페이지로 이동하며
60점 이상을 달성하기 전까진 게시판 접근이 제한된다.
교화 프로그램 시청 (마음 채우기)
유튜브에 있는 학교폭력 영상을 앱 안에서 시청할 수 있도록 YouTube API를 활용하여 기능을 구현했다.
유튜브 썸네일은 YouTubeThumbnailView를 이용했고 각 영상의 제목, 설명, 시청 여부를 함께 표시한다.
전체 영상 개수와 시청한 영상 개수도 상단에 표시했다.
(YouTubeThumbnailView 공식 문서 : https://developers.google.cn/youtube/android/player/reference/com/google/android/youtube/player/YouTubeThumbnailView.html?hl=ko )
영상 목록도 진단테스트와 마찬가지로 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 적용 완료, 챗봇 링크 활성화, 게시판 카테고리 세분화, 게시판 기능 제한)
- 8/9 ~ 8/10 (마음 채우기 유튜브 영상 시청 기능)
- 8/12 ~ 8/13 (에뮬레이션 이용, 마음 채우기 팝업 추가, 화면 회전 방지)
- 8/14 ~ 8/15 (게시판 레이아웃 보완, 유효성 검사, image-zoom-view 적용)
- 8/16 ~ 8/17 (알림 기능 추가)
이 외에도 앱 레이아웃 개선 등을 했는데 자잘한 오류를 픽스하는 과정이라 개발 일지는 따로 작성하지 않았다.
한이음 공모전 참가
8월 30일까지 한이음 공모전 참가 서류를 제출해야해서 8월 중순부터 말까지는 계속 개발보고서와 제작설계서를 작성했다.
7월 중간점검때 제출하기 위해 중간보고서를 한번 작성하긴 했지만
7~8월에 워낙 많은 기능을 구현했다보니 추가 작성해야할 내용이 꽤 많았다.
팀원 모두 열심히 작성한 덕분에 마감일로부터 4일 전인 8월 26일에 접수 완료😎
9월 이후 계획
이제 기능 자체는 구현이 모두 완료되었으니, 주변 지인들에게 배포하여 사용자 테스트를 진행하며 피드백을 받아보려 한다.
몇 달간 개발을 하다보니 이미 메인화면, 기타 화면의 UI에 너무 익숙해졌다...
사용자 테스트를 통해 앱을 아예 처음 접하는 사용자가 객관적으로 평가를 해줄 필요성을 느꼈다.
UI/UX를 개선해서 2차 공모전 접수 시 시연 영상을 촬영할 수 있도록 해야겠다.
추가로 2학기에 교내에서 진행하는 비교과 프로그램에도 참가할 예정이다.
1학기 비교과 프로그램에서 시작한 프로젝트인데 이렇게 개발을 거의 마무리하고 공모전에 참가하게 되다니ㅎㅎ
비교과 프로그램에서 두 차례에 걸쳐 공모전 참가 관련 컨설팅도 해준다고 하니 도움이 될 것이라고 기대한다.
막학기에 취준도 하면서, 한이음 프로젝트도 끝까지 열심히 참여해서 이번 학기에 마무리하자 파이팅!😉
'[한이음 ICT 멘토링] > 월별 회고' 카테고리의 다른 글
[한이음 ICT 멘토링] 10월 : 한이음 공모전 본상 수상 확정, ACK 2021 논문 최종본 제출 완료 (0) | 2021.10.26 |
---|---|
[한이음 ICT 멘토링] 9월 : 사용자 테스트 및 디버깅, UI 개선, 한이음 공모전 참가, 논문 작성 (0) | 2021.10.05 |
[한이음 ICT 멘토링] 7월 : 게시판, 진단테스트, AI 상담 채팅 구현 (0) | 2021.09.04 |
[한이음 ICT 멘토링] 6월 : 일기장, 게시판 기능 구현 (0) | 2021.07.27 |
[한이음 ICT 멘토링] 5월 : 개발 환경 세팅(GitHub, Android Studio, Firebase 연동), 개발 시작 (0) | 2021.06.12 |