wanna be dev 🧑‍💻

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

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

Android/Challenge

패스트캠퍼스 챌린지 50일차 (完)

Kick_snare 2022. 3. 14. 03:23
728x90

50일차

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

강의 목표


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

목차 02 Basic - Ch07. 녹음기


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

마무리

이제 찐막으로 자잘한 오류를 잡도록 하겠다.

reset 버튼을 눌렀을 때 녹음과 재생은 중지되도록 작성했지만 visualizer와 countView에는 반영되지 않았다.

// countUpTextView class
fun clearCountUp() {
    updateCountTime(0)
}

// soundVisualizer class
fun clearVisualization() {
    handler?.removeCallbacks(visualizerRepeatAction)
    drawingAmplitudes = emptyList()
    invalidate()
}

// MainActivity
resetButton.setOnClickListener {
    stopPlaying()
    state = State.BEFORE_RECORDING
    soundVisualizerView.clearVisualization()
    recordTimeTextView.clearCountUp()
}

각 클래스(커스텀 뷰)에 초기화 메소드를 작성해서 reset 클릭리스너에 달아준다.

정말로 ez않지 않을 수 없는 부분이다.

그리고 한번 녹음한 것을 재생하고 다시 녹음하여 재생하였을 때, draw할때의 포지션을 초기화 해줘야한다.

fun stopVisualizing() {
    handler?.removeCallbacks(visualizerRepeatAction)
    replayingPosition = 0;
}

이걸 깜박하네...

이제 찐막으로 고칠껀, 녹음된 파일을 모두 재생하고 나서, 다시 재생할 수 있도록 completeListener를 달아주는 것이다.

그럼 stopPlaying 상태로 넘어가기 전에 여러번 반복할 수 있겠죠??

player?.setOnCompletionListener {
    stopPlaying()
    state = State.AFTER_RECORDING
}

정말 놀랍게도

이렇게 까지 완성하면 녹음기 앱이 완성되었다.

놀랄 노 짜 🤔

드디어 50일 챌린지 마지막 포스팅이구만유 껄껄껄 환급 개꿀띠


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

수강인증샷

링크

https://bit.ly/37BpXiC

 

 

 

 

728x90