[Android] 뽀모도로 타이머 App 만들기

Jinny·2021년 4월 8일
0

Project - Kotlin

목록 보기
4/11
post-thumbnail

오늘은 뽀모도로 타이머를 만들어봤다.

뽀모도로는 기법은 시간 관리 방법론 25분간 집중해서 일을 한 다음 5분간 휴식하는 방식이다. '뽀모도로'는 이탈리아어로 토마토를 뜻한다.
프란체스코 시릴로가 대학생 시절 토마토 모양으로 생긴 요리용 타이머를 이용해 25분간 집중 후 휴식하는 일처리 방법을 제안한데서 그 이름이 유래했다. 출처 - 위키백과

🚩 뽀모도로 타이머

사용자가 SeekBar를 이용하여 원하는 시간을 분 단위로 맞춘다.
시간을 설정하면 째깍 거리는 소리와 함께 카운트다운이 실행된다.
카운트 다운 완료 후에는 00초를 알리는 알람을 울려준다.

사용해 본 기술

  • SeekBar
  • SoundPool

🚩 배운점

1. SeekBar

seekBar의 타이머가 카운트다운 되고 있을 때, 시간을 재설정하면
시간이 두가지로 나뉘어 함께 카운트 되는 이슈가 있었다.
SeekBar의 onStopTrackingTouch(), 즉 시간 설정이 끝났을 때 타이머를 재시작하는 로직으로 구현하여 타이머가 하나 더 생성된 것이 이유였다.
시간을 변경 하려고 seekBar를 터치하는 순간에 타이머를 정지 시키기 위해, onStartTrackingTouch() 에 타이머를 정지 시키도록 구현하여 해결 하였다.

2. SoundPool

// soundPool 빌드 처리
private val soundPool = SoundPool.Builder().build()
// 알람
private var bellId: Int? = null
bellId = soundPool.load(this, R.raw.timer_bell, 1)

bellId?.let { it ->
	soundPool.play(it, 1F, 1F, 0, -1, 1F)
}

soundPool.play에 필요한 파라미터들은 다음과 같다.추가적으로, soundPool의 경우 메모리를 많이 잡아 먹기 때문에 destroy될 때 마다 할당된 음악을 해제해주는 것이 좋다.

 override fun onDestroy() {
        super.onDestroy()
        soundPool.release()  // soundPool에 로드되었던 파일들 해제
}

3. App의 window 색 변경

UI 전체 색을 변경하더라도, APP을 시작할때 잠깐, 하얀색이 비춰지는 것을 볼 수 있다.
APP의 UI도 결국, window창 위에 그려지는 것이기 때문에 이 window창 색 까지 변경 해 주어야 하는 것이다.

<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="Theme.PomodoroTimer" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <!-- 이 부분을 추가하여 변경해준다. -->
        <item name="android:windowBackground">@color/main_red</item>
    </style>
</resources>

👩‍💻 결과

Gif로 첨부해야해서 아쉽다!!
실제로 영상을 보면 째깍째깍 하는 소리가 넘 상큼하다.

  • ++ 앱 아이콘도 귀엽게 만들어 주었다 ㅎㅎ

Git 보러가기
profile
신입 개발자👩‍💻

0개의 댓글