안드로이드(Android)

뮤직 플레이어(MusicPlayer)_1 [Android_Kotlin]

Gnow 2023. 2. 15. 21:39
728x90
반응형

참고 교재 : Joyce의 안드로이드 앱 프로그래밍 - 홍정아

 

전체 코드가 궁금하다면 아래 링크를 참고하시길 바랍니다.

 

원본 코드 : Joyce의 안드로이드 앱 프로그래밍 - 홍정아

현재 블로그 작성 코드 :Gnow


이번에 해볼 프로젝트는 뮤직 플레이어입니다.

프로젝트 진행 전 알아야할 사전지식1에 대해 정리하는 글입니다.


학습 목표 : 음악 재생, 일시정지, 앱이 종료되더라도 음악을 계속 재생하는 방법을 배우게 됩니다.

  1. MediaPlayer API
  2. Service(안드로이드 4대 구성요소)

  1. 사전 지식 : 오디오 재생 MediaPlayer API
    • MediaPlayer API는 다양한 유형의 미디어 재생을 지원합니다. 방법은 Raw와 URI가 있습니다.
      • Raw 리소스를 사용해 재생하기
        • res → raw 에 사용할 mp3를 넣어서 사용
      • URI를 사용해 재생하기
        • 기기 안에 들어있는 오디오 파일의 위치를 알려주는 URI를 사용해 재생
          • URI = Uniform Resource Identifier, 텍스트 이미지 영상 등 자원의 주소를 표현하는 형식 → URL은 URI의 일종

  • MediaPlayer 클래스에서 지원하는 함수
    • 파일 준비하기 : 파일 로드 함수 = prepare(), prepareAsync(), setDataResource()
      • prepare() : 메인 스레드에서 실행
      • prepareAsync() :백그라운드 스레드에서 실행
        • prepare()은 메인 스레드에서 실행되기 때문에 영상이나 음원이 너무 크면 ANR을 유발할 수 있습니다. 반면 prepareAsync()에서는 백그라운드 스레드를 사용하기 때문에 ANR 문제가 발생하지 않는 장점이 있습니다. 또한 onPreparedListener를 등록하여 음악 준비 완료 시점 파악 가능합니다.
          • ANR(Application Not Responding, 앱 응답 없음)

  • 파일 재생하기 : start() 재생, pause() 일시정지
  • 파일 멈추기 : reset() 함수를 호출해 멈출 수 있습니다. MediaPlayer 객체도 초기화 가능합니다.
  • 음악 길이 찾기 : getDuration() 함수로 음악의 길이 확인, 밀리초(ms)
  • 특정 구간으로 이동하기 : seekTo() 함수로 특정 위치로 이동합니다.
  • 자원 해제하기 : release() 함수를 통해 사용한 메모리와 자원 해제, MediaPlayer를 사용하지 않는다면 반드시 호출해야합니다.

※ 본 게시글은 'Joyce의 안드로이드 앱 프로그래밍 - 홍정아' 책의 내용과

Android Developers의 공식문서 내용을 참고하여 작성하였습니다.

 

전체 코드가 궁금하다면 아래 링크를 참고하시길 바랍니다.

 

원본 코드 : Joyce의 안드로이드 앱 프로그래밍 - 홍정아

현재 블로그 작성 코드 :Gnow

728x90
반응형