예전에 작업은 해두었는데 시간이 없어서(-ㅅ-) 하루이틀 미루다가 간만에 여유가 좀 되어서 끄적여봅니다.
기본으로 Android에서는 goldfish의 오디오 장치만 지원하게됩니다. 따라서 실제 기계에 올리게 되면 오디오장치가 동작하지 않게 됩니다.
일단 오디오 입출력 관련 소스는 frameworks/base/lib/audiofligner/AudioHardwareGeneric.cpp 입니다.
별도로 오디오 입출력을 구현하려면 pdk에 있는 libaudio를 구현해주면 됩니다.
단지 해야할 일은 AudioHardwareInterface를 적절하게 구현하고 해당 인스턴스를 리턴하는 createAudioHardware()라는 함수를 만들면 됩니다.
간단하게 oss를 통해서 소리만 나는 libaudio를 첨부합니다.
다음과 같은 과정을 거치면 oss를 사용해서 소리가 나오는 안드로이드 이미지를 생성할 수 있습니다.
1. libaudio.tgz를 안드로이드 소스트리의 hardware 디렉토리에 풉니다. 2. 안드로이드 소스트리의 최상위 디렉토리에서 다음 명령으로 빌드합니다. # make BOARD_USES_GENERIC_AUDIO=false 3. 빌드 된 이미지를 타겟에 심어서 사용하면 됩니다. 몽땅 엎기 귀찮으신 분은 다음 파일만 복사해서 사용하면 됩니다. * libaudio.so * libaudioflinger.so
주의: 기본적으로 안드로이드를 부팅시키면 장치 퍼미션이 600으로 되어있습니다. system/core/init/devices.c나 시스템의 /init.rc를 적당하게 수정해서 audio그룹이 rw할 수 있도록 퍼미션을 설정해야 제대로 동작합니다.
뱀다리: 몇군데에서 alsa를 포팅하려는 시도가 있던것 같은데, glibc가 포팅되지 않는 이상 상당한 애로사항이 꽃피울 것으로 예상됩니다. 혹시 glibc로 포팅 시도하시는 분 계신가요? |
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.
16
|