just_audio로 배경음악 연주하는 코드들 해설

Posted on

플러터에서 배경음악 연주를 할때 중요한 것은 지연시간입니다.

음악 연주를 하다가 화면이 바뀔때 다른 배경음악을 연주해야 한다면 아래와 같은 현상이 있게 됩니다.

  • 재생이 끝나고 다음 재생을 시작할때까지의 지연시간이 생각보다 긴 경우가 있게 됨

이 지연시간을 줄인 패키지가 just_audio입니다. just_audio는 지연시간이 1초보다 작아서 활용에 유리합니다. 지원되는 플랫폼은 Android, iOS, macOS, Web으로 윈도우는 지원을 안하는 것 같애요. 그래도 안드로이드와 iOS가 지원되서 좋습니다.

사용법은 매우 쉬운 편인데요. 함수가 간결하고 직관적입니다. 미디어 플레이어처럼 UI를 세심하게 만들지 않는다면 아래와 같은 함수로도 재생이 됩니다.

  • AudioPlayer()로 재생기 객체 생성
  • AudioSource.asset()으로 재생할 파일 지정
  • ConcatenatingAudioSource()로 여러 파일 연속 재생 소스 설정
  • setAudioSource()로 재생 소스를 객체에 넘김
  • setLoopMode()로 반복재생 설정
  • play() 함수로 재생 시작
  • pause() 함수로 재생 잠시 중단
  • play() 함수로 이어서 재생 (재생 시작 함수와 같음)

이 기반에서 아래와 같은 소스코드를 작성해볼 수 있습니다.

이렇게 해두고

처럼 기재해서 실행하면 배경음악이 연주되구요.

처럼 각 화면 담당 State<>() 안에 두면 대기상태가 되면 잠시 음악을 멈추고, 앱이 종료되면 dispose()가 되게 할 수 있습니다. WidgetsBindingObserver를 쓰는 방법인데 State<> 선언 시그니처에

처럼 해두어야 쓸 수 있구요. initState()에

처럼 addObserver()를 시작해두어야 합니다.

이 WidgetsBindingObserver를 안쓰면 앱을 대기상태로 두어도 음악이 재생되기에 방해가 되니 꼭 추가해두어야 합니다.

  • 구글 Gemini로 기능 질문을 하니 금방 해결되었습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다