OpenSL中的RecorderObject未实现在Android上设置卷或配置的接口

kin*_*ton 5 android opensl

我试图获得Android上的SLDeviceVolumeItf界面,RecorderObject但我得到了错误:SL_RESULT_FEATURE_UNSUPPORTED.

我读到OpenSL ES的Android实现不支持AudioRecorder.真的吗?

如果是,是否有解决方法?我有一个VOIP应用程序,由于麦克风增益非常高,因此无法很好地应用于Galaxy Nexus.

我也试图SL_IID_ANDROIDCONFIGURATION设置streamType到新的VOICE_COMMUNINCATION音频源,但我再次得到错误12(不支持).

   // create audio recorder
const SLInterfaceID id[2] = { SL_IID_ANDROIDSIMPLEBUFFERQUEUE, SL_IID_ANDROIDCONFIGURATION };
const SLboolean    req[2] = { SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE };

result = (*engine)->CreateAudioRecorder(engine, &recorderObject, &audioSrc,  &audioSnk, 2, id, req);
if (SL_RESULT_SUCCESS != result) {
    return false;
}

SLAndroidConfigurationItf recorderConfig;   
result = (*recorderObject)->GetInterface(recorderObject, SL_IID_ANDROIDCONFIGURATION, &recorderConfig);
if(result != SL_RESULT_SUCCESS) {
    error("failed to get SL_IID_ANDROIDCONFIGURATION interface. e == %d", result);
}
Run Code Online (Sandbox Code Playgroud)

recorderObject已创建,但我无法获取SL_IID_ANDROIDCONFIGURATION界面.我在Galaxy Nexus(ICS),HTC sense(ICS)和Motorola Blur(Gingerbread)上尝试过它.我正在使用NDK版本6.

kin*_*ton 1

现在我可以得到界面了。我必须使用 NDK 8 和 target-14。当我尝试使用 10 作为目标时,编译本机代码时出错(未找到 dirent.h)。我必须使用 target-platform-14。