He intentado conseguir la interfaz SLDeviceVolumeItf
del RecorderObject
en Android pero me dio el error: SL_RESULT_FEATURE_UNSUPPORTED.
RecorderObject en OpenSL no implementa la interfaz para ajustar el volumen o configurar en Android
leí que la aplicación Android de OpenSL ES no admite la configuración de volumen para AudioRecorder
. ¿Es eso cierto?
Si es así, ¿hay alguna solución? Tengo una aplicación VOIP que no funciona bien en Galaxy Nexus debido a la gran ganancia de micrófono.
También traté de obtener el SL_IID_ANDROIDCONFIGURATION
para configurar el streamType
en la nueva fuente de audio VOICE_COMMUNINCATION
, pero nuevamente recibo el error 12 (no admitido).
// 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);
}
El recorderObject se crea pero no puede obtener la interfaz SL_IID_ANDROIDCONFIGURATION
. Lo probé en Galaxy Nexus (ICS), HTC sense (ICS) y Motorola Blur (Gingerbread). Estoy usando NDK versión 6.
Suena extraño. Uso target = android-9 y hago las mismas cosas que tú, pero la interfaz SLAndroidConfigurationItf se recupera con éxito. ¿Puede ser por params que usaste para crear un objeto grabador? –