Como fazer o Android tocar músicas de forma confiável, sem cortar?


10

Quando tento reproduzir música no Android 2.3 (usando vários players, incluindo o PowerAmp) no Sony Ericsson Xperia X10, não recebo som confiável. A música faz uma pausa breve, por exemplo, quando:

  • Eu pressiono o botão request_suspend_state: sleep;request_suspend_state: wakeupliga / desliga (especialmente repetidamente) ( em dmesg)
  • Quando vejo mensagens como send sigkill to 15497 (ndroid.settings), adj 8, size 6428no dmesg
  • Quando algum programa reage à orientação da tela alterada.
  • Quando a conexão wifi é estabelecida, quando eu a forço a "reassociar"
  • Quando vou para / do aplicativo na tela inicial (AWDLauncher), exceto para / da tela do WidgetLocker.
  • Quando ativo / desativo o Modo Avião.
  • Quando a tela está desligada (a mais irritante)

Quando a única maneira realmente estável de tocar música é usar o StayAwake para forçar a exibição, desligar o Wi-Fi, ativar o Modo Avião e não alternar entre aplicativos. Iniciar porcos da CPU como while true; do true; donenão afeta o corte.

E estava jogando mais ou menos bem no Android 2.1.

O processo "mediaserv" (que grava em / dev / msm_pcm_out) possui prioridade em tempo real de io e agendamento, mas mesmo assim o som é instável. Se eu começar a jogar no console com mplayer -ao pcm:file=/dev/msm_pcm_outo som cortado menos (principalmente, ele não é interrompido pelo botão liga / desliga / carrega vários processos pesados), mas ainda não se comporta normalmente quando a tela está desligada (até ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_outestá irregular)

Quando inicio a música A da maneira usual e a música B usando o mplayer para / dev / msm_pcm_out (misturando-as), a música A faz um som mais que o normal e geralmente ouço B quando A está no ponto. Quando desligo a tela, os botões A e B são sincronizados (parar B leva a uma reprodução relativamente mais fluente de A dessa maneira).

Como tocar música no Android de forma confiável na presença de carregamento em segundo plano? Devo relatar um bug em algum lugar?

Atualização Encontrei uma maneira de tocar música. Inconveniente, mas sem cortar :

  1. Inicie o WakeLock no modo "CPU ativada, tela desativada, teclado desativado"
  2. Use o mplayer para reproduzir músicas ignorando o Android:
ionice -c1 -n4  \
  schedtool -R -p 3 -e \
  mplayer -really-quiet \
        -af volume=-26 -quiet \
        -ao pcm:file=/dev/msm_pcm_out,nowaveheader \
    /mnt/sdcard/music/something.ogg
# (created script to start it easily, of course)

Reproduz sem cortar, não importa quantas aplicações eu inicie, o que fazer com os modos Wifi, orientação e avião. Mesmo com o governador "powersave" do cpufreq (tudo muito lento, mas a música toca bem). Portanto, o hardware tem recursos suficientes para reproduzi-lo.

Atualização 2 Parece fazer

for i in `pgrep ''`; do schedtool -D $i; done

ou seja, "Definir prioridade ociosa para todos os processos" faz com que a música seja reproduzida bem, mesmo quando eu inicio programas, bloqueio a tela, giro a tela; ela se reconecta a outras estações de rede móvel, à custa de algum atraso de entrada nos jogos. Não sei exatamente por que isso acontece.


Qual dispositivo você tem? Parece que há muitos recursos limitados. Talvez uma ROM personalizada rápida e leve melhore o desempenho.
Flow

Sony Ericsson Xperia X10. O que significa "recurso restrito"? Ele deve priorizar a mídia em detrimento das atividades habituais, permitindo uma reprodução fluente independentemente da quantidade de carga em segundo plano presente. Também tentar causar carga usando explicitamente aplicativos pesados ​​que sobrecarregam a CPU e a memória não leva a áudio instável, enquanto apenas reassociar o Wifi sempre produz interrupção. Também jogou mais ou menos bem no Android 2.1
Vi0

A música toca da mesma forma, até eu forço o governador powersave cpufreq (e a carga não agradável da CPU é de cerca de 20% nesse caso). Quais recursos podem ser curtos?
precisa saber é

Pelo que posso ler dos seus comentários adicionais: nenhum. E também nunca ouvi dizer que o X10 tem um problema geral com a reprodução de áudio.
Flow

Incluindo após a atualização para o Android 2.3?
Vi0

Respostas:


0

Tente desativar todos os aplicativos ou hardware que usam muitos recursos do telefone. Desligue o GPS, Wi-Fi, serviço de rede e diminua a luz de fundo. Desligue também quaisquer outros aplicativos em execução que não sejam os necessários para reproduzir música. Se isso ainda não funcionar, seu dispositivo pode não ter memória suficiente.


Parece um conselho geral, não uma solução / solução alternativa para o bug. Eu tentei vários modos (descritos em questão). OOM killer é apenas uma das coisas que acionam o bug.
Vi0

0

Aumente o seu Audio Buffertamanho.

Eu uso o PlayerPro Music Player com seu pacote DSP. O pacote DSP permite ajustar o tamanho do buffer de áudio. Eu nunca precisei usar esse recurso, mas ele irá ajudá-lo.

Você também pode encontrar outros tocadores de música para suportar esse recurso. A chave é Audio Buffer.

Como alternativa, você pode reduzir a qualidade da música e a carga do sistema.


Pelo menos, definir o tamanho máximo do buffer no Mixzing player não ajuda.
Vi0

11
"reduz a qualidade da música e a carga do sistema" -> solução alternativa, não corrige. Eu já tenho soluções alternativas de hacky (consulte "Atualizações")
Vi0 16/06
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.