2012-06-15 3 views
1

저는 콘솔에서 실행 중이며 Android 4.0.3을 사용하는 TI AM37x 하드웨어에서 실행되는 NDK 애플리케이션을 개발했습니다. 이 응용 프로그램은 OpenSL API를 사용하고 있으며 하드웨어에서 SDCard에서 노래를 재생하려고합니다. 동일한 경로가 NDK 샘플 코드 (URI 재생)로 작동하지만 내 앱에서 오디오를들을 수 없습니다. 어떤 사람이 어떤 생각을 가지고 있습니까? 같은 내 코드의 흐름은 같습니다 당신은 audioSnkOpenSL ES를 사용하는 Android NDK 테스트 앱

// create output mix 
const SLInterfaceID ids[1] = {SL_IID_ENVIRONMENTALREVERB}; 
const SLboolean req[1] = {SL_BOOLEAN_FALSE}; 
result = (*engineEngine)->CreateOutputMix(engineEngine, &outputMixObject, 1, ids, req); 

// realize the output mix 
result = (*outputMixObject)->Realize(outputMixObject, SL_BOOLEAN_FALSE); 

를 구성 할 필요가

result=slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL); 
    .... 
    result = (*engineObject)->Realize(engineObject, SL_BOOLEAN_FALSE); 
    .... 
    result = (*engineObject)->GetInterface(engineObject, SL_IID_ENGINE, &engineEngine); 
    .... 
    result = (*engineEngine)->CreateOutputMix(engineEngine, &outputMixObject, 1, ids, req); 
    .... 
    Realize, GetInterface ... 
    .... 
    SLchar path[] = "/mnt/sdcard/Audio/Msong.mp3" ; 
    SLDataLocator_URI loc_uri = {SL_DATALOCATOR_URI, path}; 
    SLDataFormat_MIME format_mime = {SL_DATAFORMAT_MIME, NULL, 
    SL_CONTAINERTYPE_UNSPECIFIED}; 
    SLDataSource audioSrcuri = {&loc_uri, &format_mime}; 
    ... 
    result = (*engineEngine)->CreateAudioPlayer(engineEngine, &uriPlayerObject, 
              &audioSrcuri,&audioSnkuri, 1, idsuri, requri); 
    ... 
    result = (*uriPlayerObject)->Realize(uriPlayerObject, SL_BOOLEAN_FALSE); 
    ... 
    result = (*uriPlayerObject)->GetInterface(uriPlayerObject, SL_IID_PLAY, 
                    &uriPlayerPlay); 
    ... 
    result = (*uriPlayerObject)->GetInterface(uriPlayerObject, SL_IID_SEEK, 
                    &uriPlayerSeek); 
    ... 
    result = (*uriPlayerPlay)->SetPlayState(uriPlayerPlay, SL_PLAYSTATE_PLAYING); 

답변

1

...

// configure audio sink 
SLDataLocator_OutputMix loc_outmix = {SL_DATALOCATOR_OUTPUTMIX, outputMixObject}; 
SLDataSink audioSnk = {&loc_outmix, NULL};