Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

317
Vistas
SoundPool "AudioFlinger no pudo crear la pista, estado: -12"

Tengo una aplicación de Android con un solo botón. Cuando se hace clic en el botón, la aplicación comienza a reproducir (en bucle) el sonido cargado con SoundPool. Cuando se vuelve a hacer clic en el botón, el sonido se detiene y luego comienza de nuevo.

Pero el problema es que el sonido se reproduce solo cada dos veces.

  • Haga clic en la primera vez -> el sonido comienza a reproducirse
  • Haga clic en la segunda vez -> el sonido se detiene pero no comienza de nuevo
  • Haga clic en la tercera vez -> el sonido comienza a reproducirse
  • Haga clic en la cuarta vez -> el sonido se detiene pero no comienza a reproducirse
  • y así...

Cuando el sonido no se reproduce, aparece este error en el logcat:

 E/AudioTrack: AudioFlinger could not create track, status: -12 E/SoundPool: Error creating AudioTrack

Cuando elimino el bucle (cambio -1 a 0), ¡todo funciona completamente bien!

El sonido que estoy reproduciendo es un archivo MP3, tamaño 71,6 KiB.

He probado esto en Sony Xperia U, con Android 4.1.2 (no funciona). Pero en mi Huawei Honor 6 (Android 6.0) todo funciona, ¡incluso el bucle!

¿Qué estoy haciendo mal?


Aquí está mi código:

 import android.media.AudioManager; import android.media.SoundPool; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private int lastStreamId = 0; private int soundID; private SoundPool soundPool; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); soundID = soundPool.load(this, R.raw.sound01, 1); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { soundPool.stop(lastStreamId); lastStreamId = soundPool.play(soundID, 1, 1, 1, -1, 1); } }); } }

EDITAR:

No tengo permitido subir el sonido original aquí, pero aquí hay otro sonido que hace lo mismo. Excepto que ahora el sonido se reproduce solo en el primer clic ; todos los siguientes clics simplemente lo silencian y escupen el error anterior.

El sonido está aquí: sound01.mp3

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Como puede ver aquí , el código de error 12 significa Out of memory en el entorno Linux. Aparentemente, son algunos problemas relacionados con la asignación de memoria en dispositivos Jelly Bean (supongo que para dispositivos pre-lollipop).

Reduje la muestra de su archivo original de 177808 kbps a 32000 kbps, y comenzó a funcionar como se esperaba en los dispositivos anteriores a la piruleta.

Por lo tanto, debe reducir la muestra de su archivo de audio para dispositivos anteriores a la piruleta. Es mejor tener un raw-v21 para archivos de audio originales, y ponerlos en formato raw . Por lo tanto, los dispositivos a partir de API 21 utilizarán la versión original.

ingrese la descripción de la imagen aquí

Aquí está el archivo reducido.

over 4 years ago · Santiago Trujillo Denunciar

0

Tuve el mismo problema. Haz lo siguiente:

(1) asegúrese de que sus archivos tengan menos de 1 MB

(2) lo que es más importante, libere sus instancias de SoundPool después de usarlas para liberar espacio en la memoria

 soundPool.release();
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda