studio sonido reproducir musica mediaplayer grabar fondo ejemplo detener java android audio constructor deprecated

java - sonido - Android: ¿por qué está en desuso el constructor de SoundPool?



reproducir audio android studio (2)

¿Significa que ya no podemos usarlo? ¿Qué deberíamos usar si la API mínima está configurada por debajo de 21? Además, ¿está bien ignorar la advertencia ya que las aplicaciones más antiguas creadas con ella funcionan en los nuevos sistemas operativos?



Por qué el constructor SoundPool quedó en desuso

El viejo constructor de SoundPool quedó en desuso en favor de usar SoundPool.Builder para construir el objeto SoundPool . El antiguo constructor tenía tres parámetros: maxStreams , streamType y srcQuality .

  • El parámetro maxStreams aún se puede configurar con el Generador . (Y si no lo configura, se establece de manera predeterminada en 1.)
  • El parámetro streamType se reemplaza por AudioAttributes , que es más descriptivo que streamType . (Consulte las diferentes constantes de tipo de flujo que comienzan aquí .) Con AudioAttributes puede especificar el uso (por qué está reproduciendo el sonido), el tipo de contenido (qué está reproduciendo) y los indicadores (cómo reproducirlo).
  • El parámetro srcQuality supuestamente estaba allí para establecer la calidad del convertidor de frecuencia de muestreo. Sin embargo, nunca se implementó y su configuración no tuvo ningún efecto.

Por lo tanto, SoundPool.Builder es mejor que el constructor anterior porque maxStreams no necesita establecerse explícitamente, AudioAttributes contiene más información que streamType y se eliminó el parámetro inútil srcQuality . Es por eso que el viejo constructor estaba en desuso.

Usar el constructor obsoleto para admitir versiones antes de API 21

Aún puedes usar el viejo constructor e ignorar las advertencias si quieres. "Obsoleto" significa que todavía funciona pero ya no es la forma recomendada de hacer las cosas.

Si desea utilizar el nuevo constructor mientras aún admite versiones antiguas, puede usar una instrucción if para seleccionar la versión de API.

SoundPool mSoundPool; int mSoundId; //... if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mSoundPool = new SoundPool.Builder() .setMaxStreams(10) .build(); } else { mSoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 1); } mSoundId = mSoundPool.load(this, R.raw.somesound, 1); // ... mSoundPool.play(mSoundId, 1, 1, 1, 0, 1);

Mire este video para más detalles.