wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Challenge

패스트캠퍼스 챌린지 44일차

Kick_snare 2022. 3. 9. 00:55
728x90

44일차

30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

강의 목표


  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
  • 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.

목차 02 Basic - Ch07. 녹음기


  • 기본 UI 구성
  • 권한 요청하기
  • 녹음 기능 구현하기 - 1
  • 녹음 기능 구현하기 - 2
  • 오디오 시각화
  • 마무리

녹음 기능 구현하기 - 2

녹음 및 재생 버튼의 주요 기능을 구현하였다.

이제 reset 버튼의 기능을 구현하도록 하겠다.

먼저 View와 연결시키고

private val resetButton: Button by lazy {
    findViewById(R.id.resetButton)
}

뷰바인더 함수에 리스너를 추가해준다.

private fun bindViews() {
    recordButton.setOnClickListener {
        when(state) {
            State.BEFORE_RECORDING -> startRecord()
            State.ON_RECORDING -> stopRecording()
            State.AFTER_RECORDING -> startPlaying()
            State.ON_PLAYING -> stopPlaying()
        }
    }
    resetButton.setOnClickListener {
        stopPlaying()
        state = State.BEFORE_RECORDING
    }
}

state의 초기 상태 또한 결정 해주도록 하자

private fun initVariables() {
    state = State.BEFORE_RECORDING
}

reset 버튼을 누리는 경우는 녹음된 후 또는 재생을 하는 중일 것이다.

그러므로 이 2개의 상태일 때만 버튼은 누를 수 있도록 enable 시켜주도록 하자

private var state = State.BEFORE_RECORDING
    set(value) {
        field = value
        resetButton.isEnabled = (value == State.AFTER_RECORDING) || (value == State.ON_PLAYING)
        recordButton.updateIconWithState(value)
    }

stated의 세터함수를 갱신해주었다.


본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

수강인증샷

링크

https://bit.ly/37BpXiC

 

 

728x90