본문 바로가기
Android Studio

[Android, Kotlin] 안드로이드 어플 출시까지 한 걸음 부터(4-1), 어플리케이션 기능 만들기(MainActivity, DetailActivity - Timer)

by 열정적인 이찬형 2022. 9. 29.

MainActivity

광고(AdMob)

아래의 링크들을 이용하여 따라하면 간단하게 구현할 수 있습니다.

 

Google AdMob: 모바일 앱 수익 창출

인앱 광고를 사용하여 모바일 앱에서 더 많은 수익을 창출하고, 사용이 간편한 도구를 통해 유용한 분석 정보를 얻고 앱을 성장시켜 보세요.

admob.google.com

 

시작하기  |  Android  |  Google Developers

Android 앱을 제작 중인 Google AdMob 게시자를 위한 모바일 광고 SDK입니다.

developers.google.com

UI Click(Intent, ViewPager2, TextView)

SharedPreference을 이용하여 연속적으로 사용자가 접속하는 일 수를 TextView에 띄우도록 하였습니다.

 

ViewPager2 정보는 Room DB에서 목표에 대한 정보를 모두 가져와서 Adapter에 표시되도록 하였습니다.

ViewPager2에 현재 띄어진 화면을 선택하면 해당 목표에 DetailActivty로 이동하기 위해서 CallBack()을 이용하였습니다.

 

목표 추가

 

추가 버튼을 누르면 위와 같은 AlterDialog가 등장하여 추가할 목표를 작성한 뒤에 Room DB에 저장 및 ViewPager2에 대한 정보를 가지고 있는 List<>에도 추가하도록 합니다.

 

목표 수정

ViewPager 목표 Text 옆에 ≡ 아이콘을 선택하면 위와 같은 AlterDialog를 띄우고 목표를 수정하거나 삭제를 하면 Room DB에 그대로 Update, Delete를 진행하도록 하였습니다.


DetailActivity - TimerFragment

 

스톱워치(CountUpFragment)

스톱워치는 Chronometer를 이용해서 구현하였습니다.

SystemClock.elapsedRealtime()을 이용하여 시간을 표현하였으며 스톱워치가 정지되었을 때 지나간 시간들을 Room DB에 저장되도록 하였습니다.

 

타이머(CountDown)

시간 설정으로 타이머에 대한 시간을 측정하도록 AlterDialog를 이용하였으며 Dialog에서 설정한 숫자들은 Binding을 이용하여 ViewModel에 있는 데이터에 적용시켰습니다.

타이머를 구현할 때도 처음에는 Chronometer를 이용하여 구현하였지만 시간이 조금씩 밀리는 현상이 발생하였습니다.

Object : CountDownTimer를 이용하여 Activity에서 작동하고 해당 변화하는 내용들을 TextView로 표현하도록 하였습니다.

 

타이머가 시작되면 각 Tick마다 ProgressBar를 수정하도록 하여 시각적으로 어느 정도 진행되었는지 확인할 수 있도록 구현하였습니다. 

타이머가 시작되면 Notification을 띄어서 현재 타이머가 진행중인 것을 알리고 타이머가 종료된다면 진동이나 소리가 나도록 하였습니다.

 

진동은 Vibrate를 이용하였으며 소리는 audioPlayer를 이용하였습니다.

 

Notification을 클릭하면 현재 진행중인 타이머화면으로 이동하도록 PendingIntent를 이용하였습니다.

댓글