오늘은 제가 한 달 전 쯤에 구글 플레이 스토어에 업로드했었던 '재수 없는 타이머'라는 앱에 대한 포스팅을 해보려 합니다.
이 앱은 수능 타이머이고 제가 혼자서 개인 프로젝트로 작업한 앱입니다.
구글 플레이 스토어에 올릴 첫 작품으로 어떤 걸 할지 고민하던 중 제가 작성해두었던 아이디어 노트를 뒤져보다가 '수능 타이머'를 발견했고, 구현이 어려울 것 같지 않아 첫 작품으로 나쁘지 않겠다 싶어서 선택하게 되었습니다.
추가로 현재 제 동생이 재수 중인데, 만들면 동생한테도 약간의 도움(?)이 되지 않을까 해서 만들어 보았습니다.
https://play.google.com/store/apps/details?id=com.examtimer1.examtimer
1. 앱 내용
이 앱은 크게 4 가지 기능이 있습니다.
첫 번째 기능은 수능 1교시부터 수능 마지막 교시까지 진행시킬 수 있는 타이머 기능입니다.
아래 이미지와 같이 과목이 끝나면 화살표 버튼을 눌러 다음 과목으로 이동할 수 있습니다.
두 번째 기능은 과목별 타이머입니다.
아래 이미지처럼 버튼을 선택해서 들어가면, 과목별로 맞춤 타이머를 실행할 수 있습니다.
세 번째 기능은 이러한 타이머 기록들을 저장해주는 기능입니다.
제가 앱을 출시하기 전에 수능 타이머, 토익 타이머, 시험 타이머 등등을 다운로드하고 분석해보았는데요, 제가 처음에 예상하고 있던 것보다 많이 있어서 놀랐습니다.
그래서 이들과 차별점을 줄 수 있는 점이 뭐가 있을까 생각을 해보았습니다.
제 학창 시절 경험을 떠올려 보면, 저는 혼자서 모의고사 문제를 풀 때 걸렸던 시간을 측정하고 피드백을 했었습니다.
이러한 저의 경험을 떠올려 제 앱에 이 기능을 추가해 차별성을 주고자 습니다.
그리고 네 번째 기능은 업데이트를 하면서 새로 추가한 부분인데요, 바로 아날로그 시계 타이머입니다.
이 기능은 사실 타이머 기능이라기보다는 실제 수능 시험장에서의 현장감을 주기 위해 수능 시작 시간인 8시 40분에 시간을 맞추고 시간을 표시할 수 있게 하는 기능입니다.
수능 대비로 여러 모의고사를 풀며 시험 감각을 익힐 때 사용하면 도움이 많이 될 것 같습니다.
2. 주요 기술
이 앱을 사용하면서 쓰게 된 기술 중 첫 번째는 Fragment입니다.
저는 지금까지 주로 레이아웃을 표현할 때 activity를 많이 썼었는데요, UI를 분석하고 앱을 기획할 때 하단 내비게이션 바를 사용하기로 결정을 해서 Fragment를 쓰게 되었습니다.
두 번째 기술은 SQLite입니다.
SQLite를 사용해 타이머 기록 정보를 DB로 저장하도록 했는데요, 예제로만 다뤘었던 데이터베이스의 내용을 실제 상황에 접목시켜본 첫 경험이었습니다.
그리고 세 번째는 Thread를 사용했다는 것이었는데요, 앱 첫 실행 화면 떄 스플래쉬 이미지를 띄울 때 사용을 했었습니다.
Thread 역시 자바 공부하면서 예제로만 배웠던 내용이라 쓸 기회가 없었는데, 이번에 사용하게 되면서 다시 공부해보고 Thread의 의미에 대해서 다시금 알게 되는 계기가 되었습니다.
그리고 마지막으로 새롭게 다뤘던 기능은 Custom View입니다.
아날로그 시계를 구현할 때 안드로이드 스튜디오에 내장되어있는 analogClock의 시작 시간을 바꿀 수가 없다는 내용을 듣고 구글링을 해보니 직접 시계를 그려서 했다는 내용을 찾게 되었습니다.
그래서 구글링해서 나온 코드를 바탕으로 해서 분침과 시침의 각도를 더 세세하게 조정하고,(제가 참고한 코드는 시침이 한 시간에 한 번씩 움직이도록 설정되어있었고, 제가 1분에 한 번씩 움직이도록 조정했습니다.) 시작 시간을 설정하는 코드를 추가해서
이외의 내용들은 자잘한 기능들이거나 이전에 했던 프로젝트에서 다뤘던 내용이라 특별히 언급하지 않겠습니다.
앱에 대한 자세한 레이아웃이나 내용 등은 위의 링크에 들어가시면 확인하실 수 있습니다.
그리고 하단에는 '재수 없는 타이머'의 github 링크를 걸어놓겠습니다.
많이 부족하지만, 코드를 보고 싶으신 분들은 하단 링크를 확인해주시면 감사드리겠습니다.
https://github.com/Jeyoung-Park/ExamTimer1
'개인 프로젝트 > 테크 케찰' 카테고리의 다른 글
[개인 프로젝트] Web Feed (1) | 2020.09.20 |
---|---|
[개인 프로젝트] Dragonball Z (0) | 2020.09.13 |
[개인 프로젝트] 맞는 말만 하는 컴활 봇 (0) | 2020.07.17 |
개인 프로젝트 - LOL Random Champions (0) | 2020.06.15 |