Compartilhar via


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
SoundPool
Atributos

Comentários

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

Um SoundPool é uma coleção de amostras de som que podem ser carregadas na memória a partir 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 em PCM bruto de 16 bits. Isso permite que os aplicativos sejam enviados com fluxos compactados sem ter que sofrer a carga da CPU e a latência de descompactação durante a reprodução.

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

Além da reprodução de baixa latência, o SoundPool também pode gerenciar o número de fluxos de áudio sendo renderizados de uma só vez. 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 desse ú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 a reduzir a probabilidade de que a mixagem de áudio afete o desempenho visual ou da interface do usuário.

Os sons podem ser repetidos definindo um valor de loop diferente de zero. Um valor de -1 faz com que o som fique em loop para sempre. Nesse caso, o aplicativo deve chamar explicitamente a função stop() para parar 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 seja reproduzido 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 (reamostrada, 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 seja reproduzido na 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 play() faz com que o número de fluxos ativos exceda o valor estabelecido pelo parâmetro maxStreams quando o SoundPool foi criado. Nesse caso, o alocador de fluxo interromperá o fluxo de prioridade mais baixa. Se houver vários fluxos com a mesma prioridade baixa, ele escolherá o fluxo mais antigo a ser interrompido. 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á um 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 únicos 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 for 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 pela lista de sons chamando a função SoundPool.load() apropriada. Isso normalmente deve ser feito no início do processo para dar tempo para descompactar o áudio para o formato PCM bruto antes que eles sejam necessários para a 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 recursos, o 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 erro. Isso pode ajudar a simplificar a lógica do programa, já que 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 deve chamar SoundPool.release() para liberar todos os recursos nativos em uso e, em seguida, definir a referência SoundPool como null. Se o jogador iniciar outro nível, um novo SoundPool será criado, os sons serão carregados e a reprodução será retomada.

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

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

Construtores

SoundPool(Int32, Stream, Int32)
Obsoleto.

Construtor.

SoundPool(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo tempo de execução.

Propriedades

Class

Retorna a classe de tempo de execução deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

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

(Herdado de Object)
JniPeerMembers

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

PeerReference

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

(Herdado de Object)
ThresholdClass

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

Métodos

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

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

(Herdado de Object)
Dispose(Boolean)

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

(Herdado de Object)
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)

Reproduzir um som a partir de um 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.

SetPriority(Int32, Int32)

Alterar a prioridade do fluxo.

SetRate(Int32, Single)

Altere a taxa de reprodução.

SetVolume(Int32, Single, Single)

Definir volume de fluxo.

Stop(Int32)

Interrompa um fluxo de reprodução.

ToArray<T>()

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

(Herdado de Object)
ToString()

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

(Herdado de Object)
Unload(Int32)

Descarregar um som de um ID de som.

UnregisterFromRuntime()

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

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em 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 sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

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

(Herdado de Object)

Eventos

LoadComplete

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

Implantações explícitas de interface

IJavaPeerable.Disposed()

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

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

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

(Herdado de Object)
IJavaPeerable.Finalized()

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

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

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

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

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

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

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

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

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

(Herdado de Object)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

Aplica-se a