Android ndk 使用OpenSL ES的Android NDK测试应用程序

Android ndk 使用OpenSL ES的Android NDK测试应用程序,android-ndk,opensl,Android Ndk,Opensl,我已经开发了一个NDK应用程序(我正在控制台上运行),并使用安卓4.0.3在TI AM37x硬件上运行。这个应用程序使用OpenSL API,我正在尝试在硬件上播放SD卡中的歌曲。NDK示例代码(URI播放)也使用相同的路径,但我无法从我的应用程序中听到音频。有人知道吗? 我的代码流如下所示: result=slCreateEngine(&engineObject,0,NULL,0,NULL,NULL); .... 结果=(*engineObject)->实现(engineObject,SL_B

我已经开发了一个NDK应用程序(我正在控制台上运行),并使用安卓4.0.3在TI AM37x硬件上运行。这个应用程序使用OpenSL API,我正在尝试在硬件上播放SD卡中的歌曲。NDK示例代码(URI播放)也使用相同的路径,但我无法从我的应用程序中听到音频。有人知道吗? 我的代码流如下所示:

result=slCreateEngine(&engineObject,0,NULL,0,NULL,NULL);
....
结果=(*engineObject)->实现(engineObject,SL_BOOLEAN_FALSE);
....
结果=(*engineObject)->GetInterface(engineObject、SL_IID_ENGINE和EngineeEngine);
....
结果=(*EngineeEngine)->CreateOutputMix(EngineeEngine和outputMixObject,1,ids,req);
....
实现,获取接口。。。
....
SLchar路径[]=“/mnt/sdcard/Audio/Msong.mp3”;
SLDataLocator_URI loc_URI={SL_DATALOCATOR_URI,path};
SLDataFormat_MIME format_MIME={SL_DATAFORMAT_MIME,NULL,
SL_容器类型_未指定};
SLDataSource audioSrcuri={&loc_uri,&format_mime};
...
结果=(*EngineeEngine)->CreateAudioPlayer(EngineeEngine和uriPlayerObject,
&audioSrcuri和audioSnkuri,1,idsuri,requri);
...
结果=(*uriPlayerObject)->实现(uriPlayerObject,SL_BOOLEAN_FALSE);
...
结果=(*uriPlayerObject)->GetInterface(uriPlayerObject、SL_IID_PLAY、,
&uriPlayerPlay);
...
结果=(*uriPlayerObject)->GetInterface(uriPlayerObject、SL_IID_SEEK、,
&uriPlayerSeek);
...
结果=(*uriPlayerPlay)->设置播放状态(uriPlayerPlay,SL_播放状态_播放);

您需要配置audioSnk

// 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);


您需要配置audioSnk

// 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);