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 subire il carico della CPU e la latenza della decompressione durante la riproduzione.

I suoni soundpool dovrebbero 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,1 kHz stereo (la durata è proporzionalmente più lunga a frequenze di campionamento inferiori o una maschera di canale di mono). Un suono audio decodificato verrà troncato se supererebbe lo spazio di archiviazione per audio di un megabyte.

Oltre alla riproduzione a bassa latenza, SoundPool può anche gestire il numero di flussi audio di cui viene eseguito il 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 viene superato il numero massimo di flussi, SoundPool arresterà automaticamente un flusso di riproduzione in precedenza in base alla priorità e quindi in base all'età entro tale priorità. La limitazione del numero massimo di flussi consente di limitare il caricamento della CPU e ridurre la probabilità che la combinazione audio influisca sugli oggetti visivi o sulle prestazioni dell'interfaccia utente.

I suoni possono essere cicliti impostando un valore di ciclo diverso da zero. Il valore -1 fa sì che il suono si loop per sempre. In questo caso, l'applicazione deve chiamare in modo esplicito la funzione stop() per arrestare il suono. Qualsiasi altro valore diverso da zero fa sì che il suono ripeta il numero specificato di volte, ad esempio un valore pari a 3 fa sì che il suono venga riprodotto un totale di 4 volte.

È anche possibile modificare la frequenza di riproduzione. Una frequenza di riproduzione di 1,0 fa sì che il suono venga riprodotto alla frequenza originale (ricampionato, se necessario, alla frequenza di output hardware). Una frequenza di riproduzione di 2,0 fa sì che il suono venga riprodotto due volte la frequenza originale e una frequenza di riproduzione pari a 0,5 lo fa riprodurre a metà della frequenza originale. L'intervallo di frequenza di riproduzione è compreso tra 0,5 e 2,0.

La priorità è bassa ad alta, ad esempio i numeri più alti hanno priorità più alta. La priorità viene usata quando una chiamata a play() causa il superamento del valore stabilito dal parametro maxStreams quando è stato creato SoundPool. In questo caso, l'allocatore di flusso arresterà il flusso con priorità più bassa. 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 caso d'uso tipico: un gioco è costituito da diversi livelli di gioco. Per ogni livello, è presente un set di suoni univoci usati solo da quel livello. In questo caso, la logica del gioco deve creare un nuovo oggetto SoundPool quando viene caricato il primo livello. I dati di livello stessi potrebbero contenere l'elenco di suoni da usare da questo livello. La logica di caricamento scorre l'elenco di suoni che chiamano la funzione SoundPool.load() appropriata. Questa operazione dovrebbe in genere essere eseguita all'inizio del processo per consentire la decompressione dell'audio in formato PCM non elaborato prima che siano necessari per la riproduzione.

Una volta caricati e riprodotti, l'applicazione può attivare suoni chiamando SoundPool.play(). La riproduzione dei flussi può essere sospesa o ripresa 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 di vincoli di risorse, streamID è un riferimento a una determinata istanza di un flusso. Se il flusso viene arrestato per consentire la riproduzione di un flusso con priorità più alta, il flusso non è più valido. Tuttavia, l'applicazione può chiamare i metodi sull'ID di flusso senza errori. Ciò può contribuire a semplificare la logica del programma perché l'applicazione non deve preoccuparsi del ciclo di vita del flusso.

In questo esempio, quando il giocatore 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 SoundPool su null. Se il lettore inizia un altro livello, viene creato un nuovo SoundPool, vengono caricati i suoni e viene ripresa la riproduzione.

Documentazione java per android.media.SoundPool.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

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 per l'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 su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Load(AssetFileDescriptor, Int32)

Caricare il suono da un descrittore di file di 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 monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor 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 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 del 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 di 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()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo>< 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)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo>< 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 del tipo di tipo controllato 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