Freigeben über


SoundPool Klasse

Definition

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
SoundPool
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 schleift. 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 vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

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

Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
JniIdentityHashCode

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
JniPeerMembers

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

PeerReference

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(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

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)
Dispose()

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
Dispose(Boolean)

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
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.

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>()

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(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()

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(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)

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, 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)

Ereignisse

LoadComplete

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
IJavaPeerable.Finalized()

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

GetJniTypeName(IJavaPeerable)

Die SoundPool-Klasse verwaltet und gibt Audioressourcen für Anwendungen wieder.

Gilt für: