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?
Use SoundPool.Builder
en SoundPool.Builder
lugar. La forma en que se crea un SoundPool ha sido modificada. Se le anima a usar la nueva forma.
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 porAudioAttributes
, que es más descriptivo questreamType
. (Consulte las diferentes constantes de tipo de flujo que comienzan aquí .) ConAudioAttributes
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.