O Android controla a velocidade de reprodução de áudio e obtém recursos brutos

Recentemente encontrou um problema de controle da velocidade de reprodução de áudio, o método comum é usar SoundPool.

Mas um problema com esse método é que ele só pode tocar por 3 segundos no meu telefone núbio. Não encontrei a configuração no código-fonte, mas há uma mensagem nas informações de registro impressas: D/MMParserExtractor: Using default parser out buffer size = 3000e só pode tocar localmente arquivos ou salvar No rawarquivo do meio, o arquivo de rede não pode ser reproduzido diretamente, apenas pode ser descartado.

Depois de pesquisar no Google, encontrei outra maneira:
http://stackoverflow.com/questions/10849961/speed-control-of-mediaplayer-in-android

o jeito é:

MediaPlayer mp = ...; //Whatever
float speed = 0.75f;     
mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed));

No entanto, este método só pode ser usado quando a API é igual a 23 e acima. Esses dois métodos foram encontrados até agora.

O primeiro é SoundPoolmodificar os arquivos de áudio de acordo com os requisitos de. O
segundo é abandonar os telefones celulares com API inferior a 23 ou ligar para o gerente de produto.

A propósito, anote rawo método para obter o ID do recurso:

int resId=context.getResources().getIdentifier(raw, "raw", context.getPackageName());
Uri uri=Uri.parse("android.resource://" + context.getPackageName() + "/raw/" + resId);

Acho que você gosta

Origin blog.csdn.net/Ser_Bad/article/details/53784128
Recomendado
Clasificación