Partager via


SoundPool Classe

Définition

La classe SoundPool gère et lit des ressources audio pour les applications.

[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
Héritage
SoundPool
Attributs

Remarques

La classe SoundPool gère et lit des ressources audio pour les applications.

Un SoundPool est une collection d’échantillons sonores qui peuvent être chargés en mémoire à partir d’une ressource à l’intérieur de l’APK ou d’un fichier dans le système de fichiers. La bibliothèque SoundPool utilise le service MediaCodec pour décoder l’audio en PCM brut 16 bits. Cela permet aux applications d’être livrées avec des flux compressés sans avoir à subir la charge du processeur et la latence de décompression pendant la lecture.

Les sons soundpool sont censés être courts, car ils sont prédécodés en mémoire. Chaque son décodé est en interne limité à un stockage mégaoctet, ce qui représente environ 5,6 secondes à 44,1kHz stéréo (la durée est proportionnellement plus longue à des taux d’échantillonnage inférieurs ou un masque de canal de mono). Un son audio décodé sera tronqué s’il dépasserait l’espace de stockage par mégaoctets.

En plus de la lecture à faible latence, SoundPool peut également gérer le nombre de flux audio affichés en même temps. Lorsque l’objet SoundPool est construit, le paramètre maxStreams définit le nombre maximal de flux pouvant être lus à la fois à partir de ce seul SoundPool. SoundPool effectue le suivi du nombre de flux actifs. Si le nombre maximal de flux est dépassé, SoundPool arrête automatiquement un flux de lecture antérieur en fonction de la priorité, puis par âge dans cette priorité. La limitation du nombre maximal de flux permet de limiter le chargement du processeur et de réduire la probabilité que le mélange audio ait un impact sur les visuels ou les performances de l’interface utilisateur.

Les sons peuvent être bouclé en définissant une valeur de boucle non nulle. La valeur -1 entraîne la boucle du son pour toujours. Dans ce cas, l’application doit appeler explicitement la fonction stop() pour arrêter le son. Toute autre valeur différente de zéro entraîne la répétition du son au nombre spécifié de fois, par exemple une valeur de 3 fait que le son est lu 4 fois au total.

Le taux de lecture peut également être modifié. Un taux de lecture de 1,0 provoque la lecture du son à sa fréquence d’origine (rééchantillonné, le cas échéant, à la fréquence de sortie matérielle). Un taux de lecture de 2,0 provoque la lecture du son à deux reprises à sa fréquence d’origine, et un taux de lecture de 0,5 l’entraîne à la moitié de sa fréquence d’origine. La plage de taux de lecture est de 0,5 à 2,0.

La priorité est faible à élevée, c’est-à-dire que les nombres plus élevés sont prioritaires. La priorité est utilisée lorsqu’un appel à play() entraîne la création du nombre de flux actifs au-delà de la valeur établie par le paramètre maxStreams lors de la création de SoundPool. Dans ce cas, l’allocateur de flux arrête le flux de priorité le plus bas. S’il existe plusieurs flux avec la même priorité basse, il choisit le flux le plus ancien à arrêter. Dans le cas où la priorité du nouveau flux est inférieure à tous les flux actifs, le nouveau son ne sera pas lu et la fonction play() retourne un streamID de zéro.

Examinons un cas d’usage classique : un jeu se compose de plusieurs niveaux de jeu. Pour chaque niveau, il existe un ensemble de sons uniques utilisés uniquement par ce niveau. Dans ce cas, la logique de jeu doit créer un objet SoundPool lorsque le premier niveau est chargé. Les données de niveau elles-mêmes peuvent contenir la liste des sons à utiliser par ce niveau. La logique de chargement effectue une itération dans la liste des sons appelant la fonction SoundPool.load() appropriée. Cela doit généralement être fait tôt dans le processus pour permettre la décompression du format audio au format PCM brut avant qu’ils ne soient nécessaires pour la lecture.

Une fois les sons chargés et lus, l’application peut déclencher des sons en appelant SoundPool.play(). La lecture de flux peut être suspendue ou reprise, et l’application peut également modifier la hauteur en ajustant la vitesse de lecture en temps réel pour les effets doppler ou de synthèse.

Notez que, étant donné que les flux peuvent être arrêtés en raison de contraintes de ressources, le streamID est une référence à une instance particulière d’un flux. Si le flux est arrêté pour autoriser la lecture d’un flux de priorité supérieure, le flux n’est plus valide. Toutefois, l’application est autorisée à appeler des méthodes sur le streamID sans erreur. Cela peut aider à simplifier la logique du programme, car l’application n’a pas besoin de s’inquiéter du cycle de vie du flux.

Dans notre exemple, lorsque le joueur a terminé le niveau, la logique de jeu doit appeler SoundPool.release() pour libérer toutes les ressources natives utilisées, puis définir la référence SoundPool sur Null. Si le joueur démarre un autre niveau, un nouveau SoundPool est créé, des sons sont chargés et jouent des cv.

Documentation Java pour android.media.SoundPool.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

Constructeurs

SoundPool(Int32, Stream, Int32)
Obsolète.

Constructeur.

SoundPool(IntPtr, JniHandleOwnership)

Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime.

Propriétés

Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
JniIdentityHashCode

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
JniPeerMembers

La classe SoundPool gère et lit des ressources audio pour les applications.

PeerReference

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

Méthodes

AutoPause()

Suspendre tous les flux actifs.

AutoResume()

Reprendre tous les flux précédemment actifs.

Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
Dispose()

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
Dispose(Boolean)

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
GetHashCode()

Retourne une valeur de code de hachage pour l'objet.

(Hérité de Object)
JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
Load(AssetFileDescriptor, Int32)

Chargez le son à partir d’un descripteur de fichier multimédia.

Load(Context, Int32, Int32)

Chargez le son à partir de la ressource APK spécifiée.

Load(FileDescriptor, Int64, Int64, Int32)

Chargez le son à partir d’un FileDescriptor.

Load(String, Int32)

Chargez le son à partir du chemin spécifié.

LoadAsync(AssetFileDescriptor, Int32)

La classe SoundPool gère et lit des ressources audio pour les applications.

LoadAsync(Context, Int32, Int32)

La classe SoundPool gère et lit des ressources audio pour les applications.

LoadAsync(FileDescriptor, Int64, Int64, Int32)

La classe SoundPool gère et lit des ressources audio pour les applications.

LoadAsync(String, Int32)

La classe SoundPool gère et lit des ressources audio pour les applications.

Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
Pause(Int32)

Suspendre un flux de lecture.

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

Lire un son à partir d’un ID sonore.

Release()

Relâchez les ressources SoundPool.

Resume(Int32)

Reprendre un flux de lecture.

SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
SetLoop(Int32, Int32)

Définissez le mode boucle.

SetOnLoadCompleteListener(SoundPool+IOnLoadCompleteListener)

Définit le hook de rappel pour OnLoadCompleteListener.

SetPriority(Int32, Int32)

Modifier la priorité du flux.

SetRate(Int32, Single)

Modifier le taux de lecture.

SetVolume(Int32, Single, Single)

Définissez le volume de flux.

Stop(Int32)

Arrêtez un flux de lecture.

ToArray<T>()

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
ToString()

Retourne une représentation de chaîne de l'objet.

(Hérité de Object)
Unload(Int32)

Déchargez un son à partir d’un ID sonore.

UnregisterFromRuntime()

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou> <em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Événements

LoadComplete

La classe SoundPool gère et lit des ressources audio pour les applications.

Implémentations d’interfaces explicites

IJavaPeerable.Disposed()

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
IJavaPeerable.DisposeUnlessReferenced()

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
IJavaPeerable.Finalized()

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
IJavaPeerable.JniManagedPeerState

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

La classe SoundPool gère et lit des ressources audio pour les applications.

(Hérité de Object)

Méthodes d’extension

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

La classe SoundPool gère et lit des ressources audio pour les applications.

GetJniTypeName(IJavaPeerable)

La classe SoundPool gère et lit des ressources audio pour les applications.

S’applique à