Condividi tramite


SoundPool Classe

Definizione

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

[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
Ereditarietà
SoundPool
Attributi

Commenti

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

SoundPool è una raccolta di campioni audio che possono essere caricati in memoria da una risorsa all'interno dell'APK o da un file nel file system. La libreria SoundPool usa il servizio MediaCodec per decodificare l'audio in PCM non elaborato a 16 bit. In questo modo, le applicazioni possono essere fornite con flussi compressi senza dover soffrire il carico della CPU e la latenza della decompressione durante la riproduzione.

I suoni di Soundpool devono essere brevi perché sono predecodati in memoria. Ogni suono decodificato è limitato internamente a uno spazio di archiviazione megabyte, che rappresenta circa 5,6 secondi a 44,1kHz stereo (la durata è proporzionalmente più lunga a tassi di campionamento inferiori o una maschera di canale di mono). Un suono audio decodificato verrà troncato se supera lo spazio di archiviazione per ogni audio.

Oltre alla riproduzione a bassa latenza, SoundPool può anche gestire il numero di flussi audio sottoposti a rendering contemporaneamente. Quando l'oggetto SoundPool viene costruito, il parametro maxStreams imposta il numero massimo di flussi che possono essere riprodotti alla volta da questo singolo SoundPool. SoundPool tiene traccia del numero di flussi attivi. Se il numero massimo di flussi viene superato, SoundPool arresterà automaticamente un flusso di riproduzione precedentemente in base alla priorità e quindi entro tale priorità. Limitare il numero massimo di flussi consente di limitare il caricamento della CPU e ridurre la probabilità che la combinazione audio influisca sulle prestazioni visive o dell'interfaccia utente.

I suoni possono essere cicliati impostando un valore ciclo diverso da zero. Un valore di -1 causa il ciclo del suono per sempre. In questo caso, l'applicazione deve chiamare in modo esplicito la funzione stop() per arrestare il suono. Qualsiasi altro valore non zero causerà che il suono ripeti il numero specificato di volte, ad esempio un valore pari a 3 causa la riproduzione del suono di un totale di 4 volte.

È anche possibile modificare la frequenza di riproduzione. Una frequenza di riproduzione pari a 1,0 causa la riproduzione del suono alla frequenza originale (recuperata, se necessario, alla frequenza di output hardware). Una frequenza di riproduzione di 2,0 causa la riproduzione del suono a due volte la frequenza originale e una frequenza di riproduzione pari a 0,5 causa la riproduzione a metà della frequenza originale. L'intervallo di frequenza di riproduzione è compreso tra 0,5 e 2,0.

La priorità viene eseguita ad alto, ad esempio numeri più elevati sono priorità più elevata. La priorità viene usata quando viene creata una chiamata a play() il numero di flussi attivi supera il valore stabilito dal parametro maxStreams al momento della creazione di SoundPool. In questo caso, l'allocatore di flusso arresterà il flusso di priorità più basso. Se sono presenti più flussi con la stessa priorità bassa, sceglierà il flusso meno recente da arrestare. Nel caso in cui la priorità del nuovo flusso sia inferiore a tutti i flussi attivi, il nuovo suono non verrà riprodotto e la funzione play() restituirà un streamID pari a zero.

Esaminiamo un tipico caso d'uso: un gioco è costituito da diversi livelli di gioco. Per ogni livello è disponibile un set di suoni univoci usati solo da tale livello. In questo caso, la logica del gioco deve creare un nuovo oggetto SoundPool quando viene caricato il primo livello. I dati di livello possono contenere l'elenco di suoni da usare da questo livello. La logica di caricamento esegue l'iterazione tramite l'elenco di suoni che chiamano la funzione SoundPool.load() appropriata. Questa operazione deve essere eseguita in genere all'inizio del processo per consentire il tempo di decompressione del formato PCM non elaborato prima che siano necessarie per la riproduzione.

Dopo aver caricato e riprodotto i suoni, l'applicazione può attivare suoni chiamando SoundPool.play(). I flussi di riproduzione possono essere sospesi o ripresi e l'applicazione può anche modificare il passo modificando la frequenza di riproduzione in tempo reale per gli effetti doppler o di sintesi.

Si noti che poiché i flussi possono essere arrestati a causa dei vincoli di risorsa, l'ID di flusso è un riferimento a una determinata istanza di un flusso. Se il flusso viene arrestato per consentire la riproduzione di un flusso con priorità superiore, il flusso non è più valido. Tuttavia, l'applicazione è consentita per chiamare i metodi nel flussoID senza errori. Ciò può aiutare a semplificare la logica del programma perché l'applicazione non deve preoccuparsi del ciclo di vita del flusso.

In questo esempio, quando il lettore ha completato il livello, la logica del gioco deve chiamare SoundPool.release() per rilasciare tutte le risorse native in uso e quindi impostare il riferimento a SoundPool su Null. Se il lettore inizia un altro livello, viene creato un nuovo SoundPool, i suoni vengono caricati e riproduci riprende.

Documentazione Java per android.media.SoundPool.

Le parti di questa pagina sono modifiche in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .

Costruttori

SoundPool(Int32, Stream, Int32)
Obsoleti.

Costruttore.

SoundPool(IntPtr, JniHandleOwnership)

Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime.

Proprietà

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle all'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
JniPeerMembers

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

PeerReference

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

Metodi

AutoPause()

Sospendere tutti i flussi attivi.

AutoResume()

Riprendere tutti i flussi attivi in precedenza.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Dispose()

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
Dispose(Boolean)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
JavaFinalize()

Chiamato dal Garbage Collector in un oggetto quando Garbage Collection determina che non sono presenti più riferimenti all'oggetto.

(Ereditato da Object)
Load(AssetFileDescriptor, Int32)

Caricare il suono da un descrittore di file asset.

Load(Context, Int32, Int32)

Caricare il suono dalla risorsa APK specificata.

Load(FileDescriptor, Int64, Int64, Int32)

Caricare il suono da un fileDescriptor.

Load(String, Int32)

Caricare il suono dal percorso specificato.

LoadAsync(AssetFileDescriptor, Int32)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

LoadAsync(Context, Int32, Int32)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

LoadAsync(FileDescriptor, Int64, Int64, Int32)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

LoadAsync(String, Int32)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

Notify()

Riattiva un singolo thread in attesa del monitoraggio dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitoraggio dell'oggetto.

(Ereditato da Object)
Pause(Int32)

Sospendere un flusso di riproduzione.

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

Riprodurre un suono da un ID audio.

Release()

Rilasciare le risorse di SoundPool.

Resume(Int32)

Riprendere un flusso di riproduzione.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetLoop(Int32, Int32)

Impostare la modalità ciclo.

SetOnLoadCompleteListener(SoundPool+IOnLoadCompleteListener)

Imposta l'hook di callback per OnLoadCompleteListener.

SetPriority(Int32, Int32)

Modificare la priorità del flusso.

SetRate(Int32, Single)

Modificare la frequenza di riproduzione.

SetVolume(Int32, Single, Single)

Impostare il volume di flusso.

Stop(Int32)

Arrestare un flusso di riproduzione.

ToArray<T>()

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
Unload(Int32)

Scarica un suono da un ID audio.

UnregisterFromRuntime()

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
Wait()

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere eseguendo>una notifica</em o <em interrotto</>em>>.<

(Ereditato da Object)
Wait(Int64)

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale.

(Ereditato da Object)

Eventi

LoadComplete

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

Implementazioni dell'interfaccia esplicita

IJavaPeerable.Disposed()

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
IJavaPeerable.Finalized()

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione dei tipi controllati dal runtime Android.

JavaCast<TResult>(IJavaObject)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

GetJniTypeName(IJavaPeerable)

La classe SoundPool gestisce e riproduce risorse audio per le applicazioni.

Si applica a