SoundPool Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.
[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
- Vererbung
- Attribute
Hinweise
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.
Ein SoundPool ist eine Sammlung von Soundbeispielen, die aus einer Ressource innerhalb der APK oder aus einer Datei im Dateisystem in den Speicher geladen werden können. Die SoundPool-Bibliothek verwendet den MediaCodec-Dienst, um das Audio in unformatierte 16-Bit-PCM zu decodieren. Dadurch können Anwendungen mit komprimierten Datenströmen ausgeliefert werden, ohne die CPU-Auslastung und Latenz der Dekomprimierung während der Wiedergabe zu beeinträchtigen.
Soundpoolsounds werden voraussichtlich kurz sein, da sie im Arbeitsspeicher vordecodiert sind. Jeder decodierte Sound ist intern auf einen Megabyte-Speicher begrenzt, der ungefähr 5,6 Sekunden bei 44,1kHz Stereo darstellt (die Dauer ist proportional länger bei niedrigeren Samplingraten oder einer Kanalmaske von Mono). Ein decodierter Audiosound wird abgeschnitten, wenn er den Speicherplatz pro Sound um ein Megabyte überschreitet.
Neben der Wiedergabe mit geringer Latenz kann SoundPool auch die Anzahl der Gleichzeitig gerenderten Audiodatenströme verwalten. Wenn das SoundPool-Objekt erstellt wird, legt der Parameter maxStreams die maximale Anzahl von Datenströmen fest, die gleichzeitig aus diesem einzelnen SoundPool wiedergegeben werden können. SoundPool verfolgt die Anzahl der aktiven Datenströme. Wenn die maximale Anzahl von Datenströmen überschritten wird, beendet SoundPool automatisch einen zuvor wiedergegebenen Datenstrom basierend auf Priorität und dann nach Alter innerhalb dieser Priorität. Das Einschränken der maximalen Anzahl von Datenströmen trägt dazu bei, das CPU-Laden zu begrenzen und die Wahrscheinlichkeit zu verringern, dass sich das Mischen von Audio auf visuelle Elemente oder die UI-Leistung auswirkt.
Sounds können durch Festlegen eines Werts einer Schleife ohne Null durchlaufen werden. Ein Wert von -1 bewirkt, dass der Sound für immer schleife. In diesem Fall muss die Anwendung die Stop()-Funktion explizit aufrufen, um den Sound zu beenden. Jeder andere Wert ungleich Null bewirkt, dass der Sound die angegebene Anzahl wiederholt, z. B. ein Wert von 3 bewirkt, dass der Sound insgesamt 4 Mal wiedergegeben wird.
Die Wiedergaberate kann auch geändert werden. Eine Wiedergaberate von 1,0 bewirkt, dass der Sound mit seiner ursprünglichen Frequenz wiedergegeben wird (bei Bedarf an der Hardwareausgabehäufigkeit neu gestampelt). Eine Wiedergaberate von 2,0 bewirkt, dass der Sound bei doppelter Originalfrequenz wiedergegeben wird, und eine Wiedergaberate von 0,5 bewirkt, dass er bei halber Originalfrequenz wiedergegeben wird. Der Wiedergaberatebereich beträgt 0,5 bis 2,0.
Die Priorität ist niedrig bis hoch, d. h. höhere Zahlen sind höhere Priorität. Die Priorität wird verwendet, wenn ein Aufruf von play() dazu führen würde, dass die Anzahl der aktiven Datenströme den wert überschreitet, der vom Parameter "maxStreams" beim Erstellen des SoundPools festgelegt wurde. In diesem Fall beendet der Datenstrom-Allocator den Datenstrom mit der niedrigsten Priorität. Wenn mehrere Datenströme mit der gleichen niedrigen Priorität vorhanden sind, wird der älteste Datenstrom ausgewählt, der beendet werden soll. Wenn die Priorität des neuen Datenstroms niedriger als alle aktiven Datenströme ist, wird der neue Sound nicht wiedergegeben, und die Funktion play() gibt eine StreamID von Null zurück.
Lassen Sie uns einen typischen Anwendungsfall untersuchen: Ein Spiel besteht aus mehreren Spielebenen. Für jede Ebene gibt es eine Reihe eindeutiger Sounds, die nur von dieser Ebene verwendet werden. In diesem Fall sollte die Spiellogik ein neues SoundPool-Objekt erstellen, wenn die erste Ebene geladen wird. Die Leveldaten selbst können die Liste der Sounds enthalten, die von dieser Ebene verwendet werden sollen. Die Ladelogik durchläuft die Liste der Sounds, die die entsprechende SoundPool.load()-Funktion aufrufen. Dies sollte in der Regel früh im Prozess erfolgen, um Zeit für die Dekomprimierung des Audios in das unformatierte PCM-Format zu ermöglichen, bevor sie für die Wiedergabe benötigt werden.
Sobald die Sounds geladen und die Wiedergabe gestartet wurde, kann die Anwendung Sounds durch Aufrufen von SoundPool.play() auslösen. Wiedergabedatenströme können angehalten oder fortgesetzt werden, und die Anwendung kann auch den Pitch ändern, indem die Wiedergaberate in Echtzeit für Doppler- oder Syntheseeffekte angepasst wird.
Da Datenströme aufgrund von Ressourceneinschränkungen beendet werden können, ist die StreamID ein Verweis auf eine bestimmte Instanz eines Datenstroms. Wenn der Datenstrom beendet wird, damit ein Stream mit höherer Priorität wiedergegeben werden kann, ist der Datenstrom nicht mehr gültig. Die Anwendung darf jedoch Methoden für die streamID ohne Fehler aufrufen. Dies kann dazu beitragen, die Programmlogik zu vereinfachen, da sich die Anwendung nicht mit dem Datenstromlebenszyklus befassen muss.
Wenn der Spieler den Level abgeschlossen hat, sollte die Spiellogik SoundPool.release() aufrufen, um alle verwendeten systemeigenen Ressourcen freizugeben und dann den SoundPool-Verweis auf NULL festzulegen. Wenn der Spieler eine andere Ebene startet, wird ein neuer SoundPool erstellt, Sounds werden geladen und wiedergabe fortgesetzt.
Java Dokumentation für android.media.SoundPool.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| SoundPool(Int32, Stream, Int32) |
Veraltet.
Konstruktor. |
| SoundPool(IntPtr, JniHandleOwnership) |
Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Class |
Gibt die Laufzeitklasse dieses Werts |
| Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
| JniIdentityHashCode |
Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist. (Geerbt von Object) |
| JniManagedPeerState |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| JniPeerMembers |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. |
| PeerReference |
Ruft den JNI-Objektverweis für diesen Java Peer ab. (Geerbt von Object) |
| ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
| ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
Methoden
| Name | Beschreibung |
|---|---|
| AutoPause() |
Alle aktiven Datenströme anhalten. |
| AutoResume() |
Alle zuvor aktiven Datenströme fortsetzen. |
| Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| Dispose() |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| Dispose(Boolean) |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| DisposeUnlessReferenced() |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| Equals(Object) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
| GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
| JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
| Load(AssetFileDescriptor, Int32) |
Laden Sie den Sound aus einer Objektdateibeschreibung. |
| Load(Context, Int32, Int32) |
Laden Sie den Sound aus der angegebenen APK-Ressource. |
| Load(FileDescriptor, Int64, Int64, Int32) |
Laden Sie den Sound von einem FileDescriptor. |
| Load(String, Int32) |
Laden Sie den Sound aus dem angegebenen Pfad. |
| LoadAsync(AssetFileDescriptor, Int32) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. |
| LoadAsync(Context, Int32, Int32) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. |
| LoadAsync(FileDescriptor, Int64, Int64, Int32) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. |
| LoadAsync(String, Int32) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. |
| Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
| NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
| Pause(Int32) |
Anhalten eines Wiedergabedatenstroms. |
| Play(Int32, Single, Single, Int32, Int32, Single) |
Wiedergeben eines Sounds aus einer Sound-ID. |
| Release() |
Geben Sie die SoundPool-Ressourcen frei. |
| Resume(Int32) |
Fortsetzen eines Wiedergabedatenstroms. |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| SetLoop(Int32, Int32) |
Legen Sie den Schleifenmodus fest. |
| SetOnLoadCompleteListener(SoundPool+IOnLoadCompleteListener) |
Legt den Rückruf-Hook für den OnLoadCompleteListener fest. |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| SetPriority(Int32, Int32) |
Datenstrompriorität ändern. |
| SetRate(Int32, Single) |
Ändern sie die Wiedergaberate. |
| SetVolume(Int32, Single, Single) |
Legen Sie das Datenstromvolume fest. |
| Stop(Int32) |
Beenden Sie einen Wiedergabedatenstrom. |
| ToArray<T>() |
Erstellt ein verwaltetes Array aus diesem Java Arraywrapper. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
| Unload(Int32) |
Entladen Sie einen Sound aus einer Sound-ID. |
| UnregisterFromRuntime() |
Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf. (Geerbt von Object) |
| Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><> (Geerbt von Object) |
| Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
| Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Ereignisse
| Name | Beschreibung |
|---|---|
| LoadComplete |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| IJavaPeerable.Finalized() |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. (Geerbt von JavaObject) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |