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 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| 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 |