2014. 1. 2. 15:02

업무일 기준으로 7일 이상 골치를 썩던 문제를 해결하였다...


그동안 구글의 각종 문서를 살펴보고

NDK관련 서적을 사서 테스트를 해보았다...


openSL es 를 가지고 해보려 하였으나

ICS부터는 uriPlayer에서는 playback rate가 동작하지 않는다는 비보....ㅜㅜ


결국 openMax AL에 관한 자료까지 찾다가 얻은 해답은

mp3 파일을 decoding 해서 사용하는 방법뿐이 없을것 같다는 것...


openSL을 이용하여 decording하는 방법

openMax 와 openSL을 이용하는 방법

LGPL Licence인 jLayer를 이용하는 방법 등등...


그러던 중 android의 MediaCodec에 대해서 알게되었고

그 자료를 찾던중 아래의 글을 발견하였다.

http://ekwang.tistory.com/57


단, 위에 방법은 android의 MediaCodec을 쓰는 것인데

이는 API 16부터 지원하기 때문에 그 아래 버전에서는 사용이 불가하다.


다행이 내가 하는 프로젝트는 min version이 API 16 이라서 사용이 가능했다.


위의 소스를 바로 적용하였더니 내 경우에는 오류가 좀 발생하여 이를 수정하였고

위에 소스에는 없는 재생 속도를 조절하는 부분을 추가하였다


http://www.basic4ppc.com/android/forum/threads/audiotrack.14007/ 를 참조함


현재 갤2에서 약 5초짜리 mp3로만 테스트를 하였으며

재생 완료 후의 callback 처리 부분을 작업중이다.


실제 정상적인 길이의 음악파일에서의 테스트도 남았고...

또한 API 16 이하 버전에서의 지원까지 고려한다면

결국 openSL es나 openMax AL을 이용하여야겠지만

ndk를 잘 모르는 현재로써는 더 많은 시간을 투자해야 할 것 같다....



그리고

좋은 정보를 올려주신 ekwang님과 Steve님께 다시 한번 감사 인사를 드립니다.

ekwang님, Steve님 감사합니다.^^



'Android' 카테고리의 다른 글

android webview 와 기본 내장 브라우저 구별법  (0) 2014.07.08
webView에서 javascript함수 호출시 에러  (0) 2014.06.26
GCM 작업을 하다가...  (0) 2014.06.05
전화번호 가져오기  (0) 2013.12.27
Can't open file for reading  (0) 2013.12.23
Posted by 작은0악마