SoundPool Clase

Definición

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

[Android.Runtime.Register("android/media/SoundPool", DoNotGenerateAcw=true)]
public class SoundPool : Java.Lang.Object
[<Android.Runtime.Register("android/media/SoundPool", DoNotGenerateAcw=true)>]
type SoundPool = class
    inherit Object
Herencia
SoundPool
Atributos

Comentarios

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

Un SoundPool es una colección de muestras de sonido que se pueden cargar en la memoria desde un recurso dentro del APK o desde un archivo en el sistema de archivos. La biblioteca SoundPool usa el servicio MediaCodec para descodificar el audio en PCM de 16 bits sin procesar. Esto permite que las aplicaciones se envíen con secuencias comprimidas sin tener que sufrir la carga de CPU y la latencia de descompresión durante la reproducción.

Se espera que los sonidos de soundpool sean cortos, ya que están codificados previamente en la memoria. Cada sonido descodificado se limita internamente a un almacenamiento de megabyte, que representa aproximadamente 5,6 segundos en estéreo de 44,1kHz (la duración es proporcionalmente más larga a velocidades de muestra más bajas o una máscara de canal de mono). Se truncará un sonido de audio descodificado si superaría el espacio de almacenamiento de un megabyte por sonido.

Además de la reproducción de baja latencia, SoundPool también puede administrar el número de secuencias de audio que se representan a la vez. Cuando se construye el objeto SoundPool, el parámetro maxStreams establece el número máximo de secuencias que se pueden reproducir a la vez desde este único SoundPool. SoundPool realiza un seguimiento del número de secuencias activas. Si se supera el número máximo de secuencias, SoundPool detendrá automáticamente una secuencia de reproducción previa basada en la prioridad y, a continuación, por edad dentro de esa prioridad. Limitar el número máximo de secuencias ayuda a limitar la carga de CPU y reducir la probabilidad de que la mezcla de audio afecte al rendimiento de los objetos visuales o de la interfaz de usuario.

Los sonidos se pueden repetir estableciendo un valor de bucle distinto de cero. Un valor de -1 hace que el sonido se bucle para siempre. En este caso, la aplicación debe llamar explícitamente a la función stop() para detener el sonido. Cualquier otro valor distinto de cero hará que el sonido repita el número de veces especificado, por ejemplo, un valor de 3 hace que el sonido reproduzca un total de 4 veces.

La velocidad de reproducción también se puede cambiar. Una velocidad de reproducción de 1,0 hace que el sonido se reproduzca con su frecuencia original (se vuelve a muestrear, si es necesario, a la frecuencia de salida del hardware). Una velocidad de reproducción de 2,0 hace que el sonido se reproduzca dos veces su frecuencia original, y una velocidad de reproducción de 0,5 hace que se reproduzca a la mitad de su frecuencia original. El intervalo de velocidad de reproducción es de 0,5 a 2,0.

La prioridad se ejecuta de baja a alta, es decir, los números más altos son más prioritarios. Se usa priority cuando una llamada a play() haría que el número de secuencias activas superara el valor establecido por el parámetro maxStreams cuando se creó SoundPool. En este caso, el asignador de secuencia detendrá la secuencia de prioridad más baja. Si hay varias secuencias con la misma prioridad baja, elegirá la secuencia más antigua para detenerla. En caso de que la prioridad de la nueva secuencia sea inferior a todas las secuencias activas, el nuevo sonido no se reproducirá y la función play() devolverá un streamID de cero.

Vamos a examinar un caso de uso típico: un juego consta de varios niveles de juego. Para cada nivel, hay un conjunto de sonidos únicos que solo usan ese nivel. En este caso, la lógica del juego debe crear un nuevo objeto SoundPool cuando se cargue el primer nivel. Los propios datos de nivel pueden contener la lista de sonidos que usará este nivel. La lógica de carga recorre en iteración la lista de sonidos que llaman a la función SoundPool.load() adecuada. Normalmente, esto debe realizarse al principio del proceso para permitir el tiempo para descomprimir el audio en formato PCM sin procesar antes de que sean necesarios para la reproducción.

Una vez que se cargan los sonidos y se ha iniciado la reproducción, la aplicación puede desencadenar sonidos mediante una llamada a SoundPool.play(). La reproducción de secuencias se puede pausar o reanudar, y la aplicación también puede modificar el tono ajustando la velocidad de reproducción en tiempo real para efectos de síntesis o horizontales.

Tenga en cuenta que, dado que las secuencias se pueden detener debido a restricciones de recursos, streamID es una referencia a una instancia determinada de una secuencia. Si la secuencia se detiene para permitir que se reproduzca una secuencia de mayor prioridad, la secuencia ya no es válida. Sin embargo, la aplicación puede llamar a métodos en streamID sin errores. Esto puede ayudar a simplificar la lógica del programa, ya que la aplicación no necesita preocuparse por el ciclo de vida de la secuencia.

En nuestro ejemplo, cuando el jugador ha completado el nivel, la lógica del juego debe llamar a SoundPool.release() para liberar todos los recursos nativos en uso y, a continuación, establecer la referencia de SoundPool en null. Si el reproductor inicia otro nivel, se crea un nuevo SoundPool, se cargan los sonidos y se reanudan las reproducciones.

Documentación de Java para android.media.SoundPool.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código y se usan según los términos descritos en la creative Commons 2.5.

Constructores

SoundPool(Int32, Stream, Int32)
Obsoletos.

Constructor.

SoundPool(IntPtr, JniHandleOwnership)

Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el entorno de ejecución.

Propiedades

Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
JniPeerMembers

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

PeerReference

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

Métodos

AutoPause()

Pausar todas las secuencias activas.

AutoResume()

Reanude todas las secuencias activas anteriormente.

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Dispose()

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
Dispose(Boolean)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
JavaFinalize()

Llamado por el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto.

(Heredado de Object)
Load(AssetFileDescriptor, Int32)

Cargue el sonido desde un descriptor de archivo de recursos.

Load(Context, Int32, Int32)

Cargue el sonido del recurso APK especificado.

Load(FileDescriptor, Int64, Int64, Int32)

Cargue el sonido desde un FileDescriptor.

Load(String, Int32)

Cargue el sonido desde la ruta de acceso especificada.

LoadAsync(AssetFileDescriptor, Int32)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

LoadAsync(Context, Int32, Int32)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

LoadAsync(FileDescriptor, Int64, Int64, Int32)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

LoadAsync(String, Int32)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
Pause(Int32)

Pausar una secuencia de reproducción.

Play(Int32, Single, Single, Int32, Int32, Single)

Reproducir un sonido de un identificador de sonido.

Release()

Libere los recursos de SoundPool.

Resume(Int32)

Reanude una secuencia de reproducción.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
SetLoop(Int32, Int32)

Establecer el modo de bucle.

SetOnLoadCompleteListener(SoundPool+IOnLoadCompleteListener)

Establece el enlace de devolución de llamada para OnLoadCompleteListener.

SetPriority(Int32, Int32)

Cambie la prioridad del flujo.

SetRate(Int32, Single)

Cambiar la velocidad de reproducción.

SetVolume(Int32, Single, Single)

Establezca el volumen de flujo.

Stop(Int32)

Detenga una secuencia de reproducción.

ToArray<T>()

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
Unload(Int32)

Descargue un sonido de un identificador de sonido.

UnregisterFromRuntime()

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em> o <em>interrumpido</em>.<><

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Eventos

LoadComplete

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

Implementaciones de interfaz explícitas

IJavaPeerable.Disposed()

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
IJavaPeerable.Finalized()

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

(Heredado de Object)

Métodos de extensión

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

GetJniTypeName(IJavaPeerable)

La clase SoundPool administra y reproduce recursos de audio para aplicaciones.

Se aplica a