SoundPool Classe

Definição

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

[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
Herança
Atributos

Comentários

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

Um SoundPool é uma coleção de exemplos de som que podem ser carregados na memória de um recurso dentro do APK ou de um arquivo no sistema de arquivos. A biblioteca SoundPool usa o serviço MediaCodec para decodificar o áudio no PCM bruto de 16 bits. Isso permite que os aplicativos sejam enviados com fluxos compactados sem precisar sofrer a carga da CPU e a latência de descompactação durante a reprodução.

Espera-se que os sons de soundpool sejam curtos, pois são pré-codificados na memória. Cada som decodificado é limitado internamente a um armazenamento megabyte, que representa aproximadamente 5,6 segundos a 44,1kHz estéreo (a duração é proporcionalmente maior em taxas de exemplo mais baixas ou uma máscara de canal de mono). Um som de áudio decodificado será truncado se exceder o espaço de armazenamento por som de um megabyte.

Além da reprodução de baixa latência, o SoundPool também pode gerenciar o número de fluxos de áudio sendo renderizados ao mesmo tempo. Quando o objeto SoundPool é construído, o parâmetro maxStreams define o número máximo de fluxos que podem ser reproduzidos por vez a partir deste único SoundPool. O SoundPool rastreia o número de fluxos ativos. Se o número máximo de fluxos for excedido, o SoundPool interromperá automaticamente um fluxo de reprodução anterior com base primeiro na prioridade e, em seguida, por idade dentro dessa prioridade. Limitar o número máximo de fluxos ajuda a limitar o carregamento da CPU e reduzir a probabilidade de que a combinação de áudio afete visuais ou desempenho da interface do usuário.

Os sons podem ser looped definindo um valor de loop diferente de zero. Um valor de -1 faz com que o som faça loop para sempre. Nesse caso, o aplicativo deve chamar explicitamente a função stop() para interromper o som. Qualquer outro valor diferente de zero fará com que o som repita o número especificado de vezes, por exemplo, um valor de 3 faz com que o som reproduza um total de 4 vezes.

A taxa de reprodução também pode ser alterada. Uma taxa de reprodução de 1,0 faz com que o som seja reproduzido em sua frequência original (resampado, se necessário, para a frequência de saída do hardware). Uma taxa de reprodução de 2,0 faz com que o som seja reproduzido com o dobro de sua frequência original e uma taxa de reprodução de 0,5 faz com que ele reproduza pela metade de sua frequência original. O intervalo de taxa de reprodução é de 0,5 a 2,0.

A prioridade é baixa a alta, ou seja, números mais altos são prioridade mais alta. A prioridade é usada quando uma chamada para reproduzir() faria com que o número de fluxos ativos excedesse o valor estabelecido pelo parâmetro maxStreams quando o SoundPool foi criado. Nesse caso, o alocador de fluxo interromperá o fluxo de prioridade mais baixo. Se houver vários fluxos com a mesma baixa prioridade, ele escolherá o fluxo mais antigo para parar. No caso em que a prioridade do novo fluxo for menor do que todos os fluxos ativos, o novo som não será reproduzido e a função play() retornará uma streamID de zero.

Vamos examinar um caso de uso típico: um jogo consiste em vários níveis de jogo. Para cada nível, há um conjunto de sons exclusivos que são usados apenas por esse nível. Nesse caso, a lógica do jogo deve criar um novo objeto SoundPool quando o primeiro nível é carregado. Os próprios dados de nível podem conter a lista de sons a serem usados por esse nível. A lógica de carregamento itera por meio da lista de sons que chamam a função SoundPool.load() apropriada. Isso normalmente deve ser feito no início do processo para permitir tempo para descompactar o áudio para o formato PCM bruto antes que eles sejam necessários para reprodução.

Depois que os sons são carregados e a reprodução é iniciada, o aplicativo pode disparar sons chamando SoundPool.play(). Os fluxos de reprodução podem ser pausados ou retomados, e o aplicativo também pode alterar o tom ajustando a taxa de reprodução em tempo real para efeitos de doppler ou síntese.

Observe que, como os fluxos podem ser interrompidos devido a restrições de recurso, a streamID é uma referência a uma instância específica de um fluxo. Se o fluxo for interrompido para permitir que um fluxo de prioridade mais alta seja reproduzido, o fluxo não será mais válido. No entanto, o aplicativo tem permissão para chamar métodos no streamID sem erros. Isso pode ajudar a simplificar a lógica do programa, pois o aplicativo não precisa se preocupar com o ciclo de vida do fluxo.

Em nosso exemplo, quando o jogador tiver concluído o nível, a lógica do jogo deverá chamar SoundPool.release() para liberar todos os recursos nativos em uso e, em seguida, definir a referência de SoundPool como nula. Se o player iniciar outro nível, um novo SoundPool será criado, os sons serão carregados e a reprodução será retomada.

Java documentação para android.media.SoundPool.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Construtores

Nome Description
SoundPool(Int32, Stream, Int32)
Obsoleto.

Construtor.

SoundPool(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo runtime.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
JniPeerMembers

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
ThresholdClass

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

Métodos

Nome Description
AutoPause()

Pausar todos os fluxos ativos.

AutoResume()

Retome todos os fluxos ativos anteriormente.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
Equals(Object)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Load(AssetFileDescriptor, Int32)

Carregue o som de um descritor de arquivo de ativo.

Load(Context, Int32, Int32)

Carregue o som do recurso apk especificado.

Load(FileDescriptor, Int64, Int64, Int32)

Carregue o som de um FileDescriptor.

Load(String, Int32)

Carregue o som do caminho especificado.

LoadAsync(AssetFileDescriptor, Int32)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

LoadAsync(Context, Int32, Int32)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

LoadAsync(FileDescriptor, Int64, Int64, Int32)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

LoadAsync(String, Int32)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
Pause(Int32)

Pausar um fluxo de reprodução.

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

Toque um som de uma ID de som.

Release()

Libere os recursos do SoundPool.

Resume(Int32)

Retomar um fluxo de reprodução.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetLoop(Int32, Int32)

Defina o modo de loop.

SetOnLoadCompleteListener(SoundPool+IOnLoadCompleteListener)

Define o gancho de retorno de chamada para o OnLoadCompleteListener.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
SetPriority(Int32, Int32)

Alterar a prioridade do fluxo.

SetRate(Int32, Single)

Alterar a taxa de reprodução.

SetVolume(Int32, Single, Single)

Definir volume de fluxo.

Stop(Int32)

Pare um fluxo de reprodução.

ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
Unload(Int32)

Descarregue um som de uma ID de som.

UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Eventos

Nome Description
LoadComplete

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

(Herdado de JavaObject)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

A classe SoundPool gerencia e reproduz recursos de áudio para aplicativos.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a