프로젝트

[2023 월간프로젝트] 03. flutter로 음악 앱 만들기 2

(ㅇㅅㅎ) 2023. 3. 30. 15:39
728x90
반응형

 

 

 

 

프로젝트 동기와 프로젝트 목표는 이전 글에서 확인해 주시길 바랍니다.

 

 

 

사용한 기술

사용 언어 : Dart

개발환경 : flutter, Android Studio

flutter package(pub)

  • assets_audio_player
  • on_audio_query
  • percent_indicator
  • permission_handler
  • flutter_neumorphic
  • shared_preferences

 

 

 

프로젝트 설명

메인 페이지

 기본적인 음악앱보다 좀 더 간단하게 만들어 보았습니다. 메인 페이지는 Tab 형식으로 모든 음악, 가수, 앨범, 좋아하는 노래로 나누어서 구성을 했습니다. 모든 음악에서는 핸드폰에 존재하는 모든 음원 파일 중 mp3 파일을 불러오도록 설정했습니다.

 

 Tab의 윗 부분에서는 현재 재생 중인 음악의 '앨범 커버'와 '♥'(좋아하는 노래)에 대한 설정을 제작하였습니다. 그리고 그 아래에 현재 재생 중인 음악 리스트를 반복하거나 섞을 수 있도록 제작하였습니다.

 

 

상태에 따른 버튼의 변화

 모두 버튼 형식으로 제작하였으며 앨범 커버를 제외한 버튼들은 누르면 상태가 변하게 되고 앨범 커버를 누르면 음원 페이지로 이동합니다.

 

 

 음원 페이지에는 음원 정보(앨범아트, 제목, 가수명, 시간)와 간단한 조작으로 구성했습니다.

 

 

 

힘들었던 부분

1. Android 소프트웨어 업데이트

기존에 사용하던 permission 부분
새롭게 추가한 부분

 테스트 기종으로 사용하고 있던 기기에 미뤄두었던 소프트웨어 업데이트를 진행하고나니 Permission 문제가 발생하였습니다. 문제에 대해서 알아보니  Android 11부터는 storage 부분을 좀 더 세밀하게 나누어서 permission을 설정하도록 되어있어 원래 사용하던 EXTERNAL_STORAGE 말고 다른 방법으로 적용해야 하다는 것이었습니다. 음원 파일을 읽는 거니까 audio 부분만 추가를 했었는데, 작동하지 않아서 1차적으로 멘탈이 터졌습니다.

 여러가지 시도 끝에 알아낸 것은 이 프로젝트에서 permission을 사용하는 것은 on audio query로, 이 on audio query는 audio 부분뿐만 아니라 storage 전체 permission에 대해서 관여하는 것이라서 audio 뿐만 아니라 image와 video도 추가해주어야 합니다. 이런 오류는 알고 나면 간단하지만 생각보다 시간을 많이 허비했습니다.

 

2. Notification

현재 적용된 notification과 assets_audio_player pub 페이지의 notification 설명부분

 assets audio player를 사용하여 음원을 재생하는데, 이 패키지에는 notification도 사용할 수 있도록 만들어져 있습니다. 기본적으로 제공되는 notification이 기대한 부분과 달라 직접 만들어 보려고 했으나 잘 진행되지 않았습니다.

 

3. 적은 자료

 flutter 자체의 자료가 적은 것은 아니지만, 제가 딱 원하는 부분의 자료들은 잘 나오지 않았습니다. 대부분 java로 구성하는 것으로 나와서 자료와 예제 찾기가 힘들었습니다.

 

 

아쉬운 부분

1. Playlist

 on audio query를 이용하여 playlist를 만들 수 있는데, 생각처럼 진행되지 않아서 shared_preferences를 사용하여 미리 playlist를 저장해두었다가 사용할 수 있도록 구성했습니다. 하지만 이 방법을 사용하니 현재 재생 중인 playlist에 대한 조작 부분이 많아져서 playlist 대신 '♥'로 통일하여 2가지(전체 음원&♥) playlist로만 구성할 수 있도록 했습니다.

 

2. 음원 정보 변경

 음악을 듣는 기능 외에 추가적으로 음원 정보를 변경할 수 있는 기능을 처음에 계획했었습니다. flutter 패키지 중 on audio edit이라는 패키지가 있기에 손 쉽게 변경할 수 있겠구나는 생각은 들었지만, 예상된 시간이 얼마 남지 않아서 기능을 넣지 않았습니다.

 

 

프로젝트후기

삼성뮤직이 짱이더라...

 프로그램을 제작하면서 가진 능력과 시간에 비해서 너무 욕심을 많이 부렸다고 느끼기도 했고  "기본 앱이라도 편리한 음악 앱들이 많이 있는데 굳이 만들어야하나?"라는 의문이 들면서 흥미가 떨어졌습니다.  그러면서 다른 곳에 흥미가 생기니, 이 프로젝트를 서비스하는 것도 아닌데 굳이 연속해서 진행해야 할까 싶어서 이번 프로젝트에서는 flutter 공부에 의의를 두기로 했습니다.(사실 다른 곳에 흥미가 생기게 된 것이 커서 여기서 멈추게 된 큰 이유입니다. 그러나 후에 마음이 변한다면 추가하거나 할 수도 있습니다.) 그래도 flutter 공부에 대해서 기록해 두면 좋을 것 같아서 4월에는 내용들을 블로그에 정리하면서 좀 더 쉬운 토이 프로젝트를 진행해 볼 예정입니다.

반응형