aimp - Funciones de OpenSL ES admitidas en Android
aimp opensl audiotrack (2)
Es posible que desee echar un vistazo a este sitio web: http://mobilepearls.com/labs/native-android-api/ndk/docs/opensles/ . Muestra qué es y (más importante), qué no es compatible con las API de OpenSL ES para Android. No he trabajado con la función de ubicación en 3D, pero una vez más, todavía no la he necesitado.
De todos modos, tal vez ese sitio te dará más información al respecto ...
Android se supone que es compatible con audio 3D a través de la API OpenSL es, que es accesible a través del NDK. Eso más o menos funciona, logré reproducir el sonido a través de un reproductor creado y una mezcla de salida. Pero cuando intento realizar un oyente con una interfaz de ubicación en 3D (constante SL_IID_3DLOCATION) que es obligatoria para reproducir sonido 3D. Pero cuando intento establecer la constante en SL_BOOLEAN_TRUE, el resultado del método CreateListener es 12 y se pasa al LogCat. 12 es el valor de la constante de OpenSL es SL_RESULT_FEATURE_UNSUPPORTED. A continuación puede encontrar una pequeña parte del código, ¿alguien puede confirmar si hago algo mal o si la característica no está realmente protegida, lo que significa que la implementación de OpenSL es no admite audio 3D?
#define SL_RESULT_FEATURE_UNSUPPORTED ((SLuint32) 0x0000000C)
const SLInterfaceID listener_ids[] = {SL_IID_3DLOCATION};
const SLboolean listener_req[] = {SL_BOOLEAN_TRUE};
result = (*engine)->CreateListener(engine, &listenerObject, 1, listener_ids, listener_req);
__android_log_print(ANDROID_LOG_VERBOSE, DEBUG_TAG, "CREATE: [%i]", result);
assert(SL_RESULT_SUCCESS == result);
result = (*listenerObject)->Realize(listenerObject, SL_BOOLEAN_FALSE);
__android_log_print(ANDROID_LOG_VERBOSE, DEBUG_TAG, "REALIZE: [%i]", result);
assert(SL_RESULT_SUCCESS == result);
Pude haber encontrado una solución a esto cuando volví a ver el problema la semana pasada. Publiqué una posible solución con una lib de terceros aquí:
Tal vez alguien que lo necesite pueda verificar si funcionó.