SoundPool Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 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 |
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. |