반응형
동화책 읽어주기 기능을 구현 중이었다.
* 로직
- 안드로이드 앱에서 목소리를 녹음
- 녹음한 목록 출력
- 목록 터치 시 node.js 서버로 업로드
- 업로드와 동시에 'voicestart' post 전송
- 라즈베리파이 스피커로 재생
* 에러
2 ⇒
- 녹음하자마자 리스트뷰 갱신이 안됨 → 프래그먼트 갱신으로 간단하게 해결
public void refresh() { FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.detach(this).attach(this).commit(); }
3 ⇒
- httpUrlConnection 으로 해결
5 ⇒
- 와 이게 제일 문제였다. 업로드까지 잘되는데 서버에서 재생이 안되네???ㅋㅋㅋㅋ
정확히 8시간만에 답을 찾음. 안드로이드에서 녹음을 'MediaRecorder' API를 사용해서 하는데, 이거는 OutputFormat으로 AAC_ADTS, AMR_NB, AMR_WB, MPEG_2_TS, MPEG_4, OGG, RAW_AMR, THREE_GPP, WEBM 포맷들로만 저장이 된다.
첨에 걍 MPEG_4 또는 AAC_ADTS로 포맷을 지정하고, 확장자 파일명만 .mp3로 저장했음. 물론 PC는 AAC_ADTS 및 등등 포맷들을 웬만하면 지원해주니까 바로 재생이 됐다. 근데 웹은 지원을 안함!!!!!!!!!!!!!!!!!!!!! ← 이걸 구글링을 통해 찾음.
하 근데 또 안드로이드는 공식적으로 녹음 mp3 저장을 지원을 안하네ㅋㅋㅋㅋ ndk 포함시켜서 lame 라이브러리(media muxer)를 사용해야되는데 너무 복잡.
자 여기서 두 가지 방법을 생각했다.
(1) 웹에서 지원하는 js 라이브러리(howler 등)를 쓰자. ^^ (내가 안해도 됨ㅋㅋ)
(2) 안드로이드에서 웹에서 지원하는 포맷으로 저장을 하자. (mp3, wav)
근데 mp3는 너무 어려웠다.
허 !!!!!!!!!!! 근데 깃헙에 wav 레코딩을 라이브러리화 해놓은 아주 감사한 분을 찾음.
바로바로~~~~~~~~~~~~~~~ OmRecorder!!
https://github.com/kailash09dabhi/OmRecorder
- 이걸로 wav파일로 저장해서 업로드 했더니!!!!!!!!!!!!!!!!!!!
재생이 .............! 된다!!!!!!!!!! ㅠㅠㅠ
* 암튼 느낀점.
- 협업과 소통의 중요성...
- 구글링 최고.
- 솔루션에만 집중하다보면 억지스럽게 끼워맞추게 된다. 근본적인 원인을 찾아서 해결하는 것이 중요.
- 내 머리로 코딩하는 것보다, 라이브러리 갖다 쓰는 것도 나쁘지 않다. 시간 절약은 덤.
반응형
'프로그래밍 > App 개발' 카테고리의 다른 글
Syncronous, Asyncronous (오늘의 만나 iOS를 만들며 느낀점) (0) | 2020.10.02 |
---|---|
[android] 앱 종료 시 블루투스 해제되는 issue (1) | 2020.08.06 |
[android] 구글맵 선긋기 (2) | 2020.08.06 |
[android] MPAndroidChart를 활용한 실시간 차트 그리기 (0) | 2020.08.06 |
[android] MVVM의 편리함 (20.05.28 깨달은 점) (0) | 2020.08.06 |