Como desativar automaticamente o aviso de volume alto sem root

Um tutorial sobre como desativar o aviso de volume alto ou áudio seguro, exigido em dispositivos vendidos na UE. Isso funciona em todos os dispositivos sem root.

Aqueles de vocês que moram em um dos países membros da União Europeia provavelmente já se depararam com o aviso ao tentar aumentar o volume do seu fone de ouvido, conforme mostrado na imagem acima.

De acordo com os regulamentos estabelecidos pelo Comité Europeu de Normalização Electrotécnica (CENELEC), todos os dispositivos electrónicos dispositivos capazes de reproduzir mídia vendidos após fevereiro de 2013 devem ter um nível de volume de saída padrão de no máximo 85 dB. Os usuários podem optar por ignorar o aviso para aumentar o volume até um máximo de 100 dB, mas ao fazer isso o aviso deve reaparecer após 20 horas de reprodução de música.

Embora não vamos entrar num debate sobre a eficácia deste regulamento na promoção de bons saúde, os usuários que frequentemente optam por ignorar esse aviso muitas vezes se perguntam se esse processo pode ser automatizado. Há muitos casos em que é bastante chato ter que concordar manualmente em substituir o limite de volume, como quando você inicia reprodução de música remotamente em um dispositivo Bluetooth, então queríamos descobrir uma maneira de ignorar automaticamente isso aviso.

Já existem soluções para contornar o "limite de volume seguro" se você pesquisar em nossos fóruns, mas até agora todas as soluções exigiram que você instalar um Xposed Módulo. Isso necessariamente limita quem pode usá-lo, já que o Xposed Framework exige que você tenha acesso root (o que significa um bootloader desbloqueado na maioria dos telefones), além de estar em versões pré-Nougat do Android. Mas depois de pesquisar no AOSP e em várias configurações do sistema, descobri uma maneira de contornar o limite de volume alto/áudio seguro em todos os dispositivos sem precisar de root.

Ao seguir este guia, você aceita quaisquer riscos envolvidos ao ouvir mídia em níveis de volume elevados.


Tutorial de desvio de aviso de áudio seguro

Se você leu meu artigo anterior sobre habilitando o modo imersivo sem acesso root, então você pode ter começado a brincar com algumas das configurações que pode encontrar ocultas em seu telefone. Se ainda não o fez, recomendo fortemente que o faça, pois descobri que quase todos os dispositivos têm uma tonelada de novidades esperando para serem descobertas. Este truque não é diferente, pois usaremos uma propriedade do sistema para ignorar o aviso de áudio seguro.

Especificamente, estaremos modificando o System. Propriedade global audio_safe_volume_state tanto na inicialização quanto periodicamente, para que o Android sempre pense que você consentiu em ignorar o aviso. Esta propriedade é definido no AOSP, que estamos reproduzindo abaixo. Existem vários estados que esta propriedade pode assumir, variando de 0 a 3. 30 segundos após a inicialização ou a cada 20 horas de reprodução contínua de música, o estado é definido como '0' ou 'não configurado'. Em seguida, é definido como '1' para 'desativado' ou '3' para 'ativado' dependendo do seu Código do país móvel. Se você mora na UE, esta propriedade é definida como '3' por padrão, mas é alterada para '2' para 'inativo' sempre que o usuário ignora manualmente o aviso de volume. Estaremos alterando o valor desta propriedade para o estado 'inativo' (mudar para 'desativado' nunca funcionou para mim, caso você esteja se perguntando).


//
// Safe media volume management.
// MUSIC stream volume level is limited when headphones are connected according to safety
// regulation. When the user attempts to raise the volume above the limit, a warning is
// displayed and the user has to acknowlegde before the volume is actually changed.
// The volume index corresponding to the limit is stored in config_safe_media_volume_index
// property. Platforms with a different limit must set this property accordingly in their
// overlay.
//
// mSafeMediaVolumeState indicates whether the media volume is limited over headphones.
// It is SAFE_MEDIA_VOLUME_NOT_CONFIGURED at boot time until a network service is connected
// or the configure time is elapsed. It is then set to SAFE_MEDIA_VOLUME_ACTIVE or
// SAFE_MEDIA_VOLUME_DISABLED according to country option. If not SAFE_MEDIA_VOLUME_DISABLED, it
// can be setto SAFE_MEDIA_VOLUME_INACTIVE bycalling AudioService.disableSafeMediaVolume()
// (when user opts out).
privatefinalint SAFE_MEDIA_VOLUME_NOT_CONFIGURED = 0;
privatefinalint SAFE_MEDIA_VOLUME_DISABLED = 1;
privatefinalint SAFE_MEDIA_VOLUME_INACTIVE = 2;
privatefinalint SAFE_MEDIA_VOLUME_ACTIVE = 3;
private Integer mSafeMediaVolumeState;
privateint mMcc = 0;
// mSafeMediaVolumeIndex is the cached value of config_safe_media_volume_index property
privateint mSafeMediaVolumeIndex;
// mSafeMediaVolumeDevices lists the devices for which safe media volume is enforced,
privatefinalint mSafeMediaVolumeDevices = AudioSystem.DEVICE_OUT_WIRED_HEADSET |
AudioSystem.DEVICE_OUT_WIRED_HEADPHONE;
// mMusicActiveMs is the cumulative time of music activity since safe volume was disabled.
// When this time reaches UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX, the safe media volume is re-enabled
// automatically. mMusicActiveMs is rounded to a multiple of MUSIC_ACTIVE_POLL_PERIOD_MS.
privateint mMusicActiveMs;
privatestaticfinalint UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX = (20 * 3600 * 1000); // 20 hours
privatestaticfinalint MUSIC_ACTIVE_POLL_PERIOD_MS = 60000; // 1 minute polling interval
privatestaticfinalint SAFE_VOLUME_CONFIGURE_TIMEOUT_MS = 30000; // 30s after boot completed

consulte Mais informação

Você primeiro precisará instalar Tasker e Ferramentas automáticas para que possamos automatizar esse truque. Tecnicamente, qualquer outro aplicativo de automação além do Tasker pode ser usado, mas só estou familiarizado com o Tasker, então você terá que fazer ajustes por conta própria se preferir usar um aplicativo diferente. O AutoTools, porém, é fundamental para esse truque, pois esse plug-in nos permitirá controlar as configurações seguras em nosso dispositivo.

Conforme explicado em meu artigo sobre como alternar o modo imersivo, precisamos conceder o WRITE_SECURE_SETTINGS permissão para AutoTools. Isso ocorre porque o comando para controlar o estado seguro do volume de áudio é definido no Configurações. Global classe, embora a sintaxe exata do comando esteja oculta no AOSP (assim como estava no modo imersivo). Se você já concedeu a permissão WRITE_SECURE_SETTINGS ao AutoTools depois de ler meu tutorial anterior sobre o modo imersivo, você pode pular a próxima seção. Caso contrário, você terá que configurá-lo.


No sistema de gerenciamento de permissões do Android, os aplicativos definem as permissões que desejam receber no arquivo de manifesto. Os usuários podem então conceder ou negar permissões na instalação (pré-Marshmallow) ou sob demanda (Marshmallow+). No entanto, existem certas permissões que os aplicativos não podem ser concedidos, mesmo que solicitem no Manifesto, como WRITE_SECURE_SETTINGS. Isso ocorre porque conceder a qualquer aplicativo uma permissão tão poderosa como essa daria ao aplicativo muito controle sobre o seu dispositivo.

Mas há uma solução alternativa que podemos usar para conceder a permissão WRITE_SECURE_SETTINGS a qualquer aplicativo que desejarmos. Usando ADB gerenciador de pacotes (pm) ferramenta, podemos conceder qualquer permissão a qualquer aplicativo que desejarmos (desde que o aplicativo solicite essa permissão no arquivo de manifesto).

A primeira coisa que você precisa fazer é instale o binário ADB no seu computador seguido pelo driver certo para o seu dispositivo. Em seguida, habilite a depuração USB nas opções do desenvolvedor (vá para Configurações -> Sobre o telefone e toque no número da versão 7 vezes, se ainda não o fez) e conecte seu telefone ao computador. Por fim, envie o seguinte comando depois de abrir um terminal:

adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS

Agora o AutoTools poderá alterar qualquer configuração global, segura ou de sistema no seu dispositivo. Existem várias maneiras de brincar com essas configurações e a lista de configurações disponíveis em cada categoria depende completamente do seu dispositivo e da construção do software, mas essa discussão é para outra tempo. De qualquer forma, continuaremos mostrando como usar o AutoTools para controlar o estado seguro do volume.


Desativando aviso de áudio seguro na inicialização

Aqui está a descrição do perfil para aqueles que estão familiarizados com Tasker. Se você não estiver familiarizado com o Tasker, continue lendo para obter instruções passo a passo.

Desative o áudio seguro na inicialização

Profile: Disable Safe Audio On Boot (6)
Event: Monitor Start
Enter: Anon (7)
A1: Wait[ MS: 0 Seconds: 30 Minutes: 0 Hours: 0 Days: 0 ]
A2: AutoTools Secure Settings [ Configuration: Setting Type: Global
Name: audio_safe_volume_state
Input Type: Int
Value: 2 Timeout (Seconds):60 ]

consulte Mais informação

Abra o Tasker para que possamos criar um novo perfil. No canto inferior direito, toque no + ícone para criar um novo perfil. Adicione um novo Evento contexto e vá para Tasker -> Monitorar Iniciar. Estamos usando este contexto de evento que é acionado quando o Tasker é inicializado, em vez do contexto de evento que é ativado quando o telefone é inicializado, porque o primeiro é muito mais confiável do que o último.

Em qualquer caso, pressione o botão Voltar, pois agora criaremos uma Tarefa associada a este perfil. Dê um nome à tarefa, pois isso não importa. Depois de entrar na tela de criação de tarefas, pressione o botão + ícone na parte inferior central da tela para criar uma nova ação. Para a primeira ação, vá para Tarefa -> Esperar e faça com que espere 30 segundos. Isso explica a regra "30 segundos após a inicialização" usada no Android para definir o estado seguro do volume.

Em seguida, crie uma nova ação e vá para Plug-in -> AutoTools -> Configurações seguras. Pressione o lápis para abrir a tela de configuração do AutoTools. Vá para Configuração customizada. Para o tipo de configuração, insira Global. Para o Nome digite audio_safe_volume_state. Para o tipo de entrada, faça interno. Pelo Valor faça 2. Verifique se você colocou tudo corretamente, a configuração deve corresponder à imagem do meio abaixo. O comando deve ser enviado exatamente como escrevi ou não terá nenhum efeito.

Quando terminar, volte ao menu principal do Tasker, pois precisaremos criar outro perfil. Aquele que acabamos de criar considera quando o estado do volume seguro é definido 30 segundos após a inicialização, mas para aqueles de vocês que quase nunca reiniciam seu dispositivo, criaremos outro perfil para definir isso periodicamente valor.


Desative o aviso de áudio seguro periodicamente

Aqui está a descrição do perfil para aqueles que estão familiarizados com Tasker. Se você não estiver familiarizado com o Tasker, continue lendo para obter instruções passo a passo.

Desative o áudio seguro periodicamente

Profile: Disable Safe Audio Periodically (21)
Time: 11:59PM
Enter: Anon (122)
A1: AutoTools Secure Settings [ Configuration: Setting Type: Global
Name: audio_safe_volume_state
Input Type: Int
Value: 2 Timeout (Seconds):60 ]

consulte Mais informação

Crie um novo perfil, desta vez com um Tempo contexto. Infelizmente, não conheço nenhum método para obter o tempo cumulativo atual de reprodução de mídia sem root, então definiremos periodicamente o estado do volume seguro como inativo uma vez a cada 24 horas (... não é como se vocês realmente ouvissem 20 horas de música em um período de 24 horas, certo?). De qualquer forma, a interface do Tasker para definir uma tarefa periódica é meio terrível, mas a essência disso é que você deseja definir o horário "De" e "Para" ao mesmo tempo. Dessa forma, Tasker irá tratá-lo como se você quisesse que a tarefa fosse acionada apenas uma vez em um horário definido (fiz isso 1 minuto antes da meia-noite).

Quanto à Tarefa, basta copiar o que você fez na Ação nº 2 do perfil anterior. Não há nenhuma ação nova ou diferente neste caso, pois tudo o que estamos fazendo é alterar o valor desta propriedade global do sistema uma vez a cada 24 horas.

Agora que você configurou esses dois perfis, pronto! Reinicie seu telefone e agora você não deverá mais ver o aviso de “volume seguro” ao conectar seus fones de ouvido.


Baixe e importe para Tasker

Como sempre, fornecemos o arquivo XML dos scripts que você pode baixar e importar. Basta baixar os arquivos do link abaixo e salvá-los em qualquer lugar do seu armazenamento interno. Abra o Tasker e desative o Modo Iniciante em Preferências. Em seguida, volte para a tela principal e mantenha pressionada a guia “Perfil” no topo. Você deverá ver um pop-up com uma das opções sendo “Importar”. Toque nele e navegue até onde você salvou os arquivos .prf.xml e selecione o arquivo para importar. Repita para o segundo perfil.

Baixe o perfil ‘Desativar aviso de áudio seguro na inicialização’

Baixe o perfil ‘Desativar aviso de áudio seguro periodicamente’

Esperamos que esta dica seja útil. Deixe-nos saber nos comentários abaixo se isso funciona para você!