Comment désactiver automatiquement l'avertissement de volume élevé sans racine

Ceux d'entre vous qui vivent dans l'un des pays membres de l'Union européenne ont probablement déjà été avertis lorsqu'ils tentaient d'augmenter le volume de votre casque, comme indiqué dans l'image ci-dessus.

Conformément à la réglementation établie par le Comité européen de normalisation électrotechnique (CENELEC), tous les appareils électroniques compatibles avec la lecture multimédia vendus après février 2013 doivent avoir un niveau de volume de sortie par défaut de 85 dB maximum. Les utilisateurs peuvent choisir de remplacer l'avertissement pour augmenter le volume jusqu'à un maximum de 100 dB, mais ce faisant, l'avertissement doit réapparaître après 20 heures de lecture de musique.

Bien que nous n'allions pas nous lancer dans un débat sur l'efficacité de cette réglementation dans la promotion d'une bonne santé, les utilisateurs qui choisissent souvent de contourner cet avertissement se demandent souvent si ce processus peut être automatisé. Dans de nombreux cas, il est plutôt ennuyeux de devoir accepter manuellement de dépasser la limite de volume, par exemple lorsque vous démarrez la lecture de musique à distance sur un périphérique Bluetooth. Nous voulions donc trouver un moyen de contourner automatiquement cet avertissement.

Des solutions pour contourner la "limite de volume sûr" existent déjà si vous effectuez une recherche sur nos forums, mais jusqu'à présent, toutes les solutions vous ont obligé à installer un module Xposed. Cela limite nécessairement le nombre d'utilisateurs qui peuvent l'utiliser, car Xposed Framework requiert un accès root (ce qui signifie un chargeur de démarrage déverrouillé sur la plupart des téléphones) et une version antérieure à Nougat d'Android. Mais après avoir exploré AOSP et divers paramètres système, j'ai découvert un moyen de contourner la limite de volume audio élevé / de sécurité sur tous les périphériques sans avoir besoin de root.

En suivant ce guide, vous acceptez tous les risques liés à l'écoute de contenus multimédias à un volume élevé.


Didacticiel de contournement des avertissements sonores sécurisés

Si vous avez lu mon précédent article sur l'activation du mode immersif sans accès root, vous avez peut-être commencé à jouer avec certains des paramètres que vous pouvez trouver cachés sur votre téléphone. Si vous ne l'avez pas déjà fait, je vous le recommande vivement, car j'ai constaté que presque tous les appareils proposent des tonnes de cadeaux qui ne demandent qu'à être découverts. Cette astuce n'est pas différente, car nous utiliserons une propriété système pour contourner l'avertissement audio sécurisé.

Plus précisément, nous allons modifier la propriété System.Global audio_safe_volume_state au démarrage et périodiquement afin qu'Android pense toujours que vous avez consenti à ignorer l'avertissement. Cette propriété est définie dans AOSP, que nous reproduisons ci-dessous. Cette propriété peut prendre plusieurs états, allant de 0 à 3. 30 secondes après le démarrage ou toutes les 20 heures de lecture musicale en continu, l'état est défini sur "0" ou "non configuré". Il est ensuite défini sur "1" pour "désactivé" ou "3" pour "activé" en fonction de votre code de pays de mobile. Si vous habitez dans l'UE, cette propriété est définie par défaut sur «3» mais elle est remplacée par «2» pour «inactive» chaque fois que l'utilisateur contourne manuellement l'avertissement de volume. Nous allons changer la valeur de cette propriété sur l'état "inactif" (le changer en "désactivé" n'a jamais fonctionné pour moi, au cas où vous vous le demanderiez).

Mise en œuvre du volume de médias sécurisés dans AOSP

  //========================================================================================== // 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 set to SAFE_MEDIA_VOLUME_INACTIVE by calling AudioService.disableSafeMediaVolume() // (when user opts out). private final int SAFE_MEDIA_VOLUME_NOT_CONFIGURED = 0; private final int SAFE_MEDIA_VOLUME_DISABLED = 1; private final int SAFE_MEDIA_VOLUME_INACTIVE = 2; private final int SAFE_MEDIA_VOLUME_ACTIVE = 3; private Integer mSafeMediaVolumeState; private int mMcc = 0; // mSafeMediaVolumeIndex is the cached value of config_safe_media_volume_index property private int mSafeMediaVolumeIndex; // mSafeMediaVolumeDevices lists the devices for which safe media volume is enforced, private final int 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. private int mMusicActiveMs; private static final int UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX = (20 * 3600 * 1000); // 20 hours private static final int MUSIC_ACTIVE_POLL_PERIOD_MS = 60000; // 1 minute polling interval private static final int SAFE_VOLUME_CONFIGURE_TIMEOUT_MS = 30000; // 30s after boot completed 

Vous devez d’abord installer Tasker et AutoTools pour pouvoir automatiser cette astuce. Techniquement, n'importe quelle autre application d'automatisation que Tasker peut être utilisée, mais je ne connais que Tasker. Vous devrez donc faire les réglages vous-même si vous préférez utiliser une autre application. AutoTools est toutefois essentiel à cette astuce car ce plug-in nous permettra de contrôler les paramètres sécurisés sur notre appareil.

Comme expliqué dans mon article sur le basculement en mode immersif, nous devons accorder l'autorisation WRITE_SECURE_SETTINGS à AutoTools. En effet, la commande permettant de contrôler l'état du volume audio sécurisé est définie dans la classe Settings.Global, bien que la syntaxe exacte de la commande soit masquée dans AOSP (comme c'était le cas pour le mode Immersive). Si vous avez déjà accordé l'autorisation WRITE_SECURE_SETTINGS à AutoTools après avoir lu mon précédent tutoriel sur le mode Immersive, vous pouvez ignorer la section suivante. Sinon, vous devrez le configurer.


Octroi de l'autorisation de paramètres sécurisés à AutoTools

Sous le système de gestion des autorisations d'Android, les applications définissent les autorisations qu'elles souhaitent obtenir dans le fichier Manifest. Les utilisateurs peuvent ensuite accorder ou refuser des autorisations lors de l'installation (antérieure à Marshmallow) ou à la demande (Marshmallow +). Toutefois, certaines autorisations ne peuvent pas être accordées aux applications même si elles le demandent dans le manifeste, telles que WRITE_SECURE_SETTINGS. En effet, accorder à une application une autorisation aussi puissante que celle-ci donnerait à cette application une tonne de contrôle sur votre appareil.

Mais il existe une solution de contournement que nous pouvons utiliser pour accorder l’autorisation WRITE_SECURE_SETTINGS à n’importe quelle application de notre choix. En utilisant l'outil de gestion de paquets d'ADB (pm), nous pouvons accorder n'importe quelle permission à l'application de notre choix (à condition que cette application demande cette permission dans le fichier Manifest).

La première chose à faire est d’installer le fichier binaire ADB sur votre ordinateur, puis le pilote correspondant à votre périphérique. Ensuite, activez le débogage USB dans les options pour les développeurs (allez dans Paramètres -> À propos du téléphone et appuyez 7 fois sur le numéro de build si vous ne l’avez pas déjà) et connectez votre téléphone à votre ordinateur. Enfin, envoyez la commande suivante une fois que vous avez ouvert un terminal:

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

Désormais, AutoTools aura la possibilité de modifier n’importe quel paramètre global, sécurisé ou système sur votre appareil. Vous pouvez jouer avec ces paramètres de différentes manières et la liste des paramètres disponibles dans chaque catégorie dépend entièrement de la construction de votre appareil et de vos logiciels, mais cette discussion est pour une autre fois. Dans tous les cas, nous vous montrerons comment utiliser AutoTools pour contrôler l'état du volume sécurisé.


Désactivation de l'avertissement sonore sécurisé au démarrage

Voici la description du profil pour ceux d’entre vous qui connaissent bien Tasker. Si vous n'êtes pas familier avec Tasker, lisez la suite pour obtenir des instructions pas à pas.

Désactiver Safe Audio au démarrage

 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 ] 

Ouvrez Tasker pour pouvoir créer un nouveau profil. Dans le coin inférieur droit, appuyez sur l'icône + pour créer un nouveau profil. Ajoutez un nouveau contexte d’ événement et accédez à Tasker -> Démarrer le moniteur. Nous utilisons ce contexte d'événement qui se déclenche au démarrage de Tasker plutôt que le contexte d'événement qui s'active au démarrage du téléphone car le premier est beaucoup plus fiable que le second.

Dans tous les cas, appuyez sur le bouton Précédent car nous allons maintenant créer une tâche associée à ce profil. Nommez la tâche quelque chose comme cela n'a pas d'importance. Une fois que vous avez ouvert l'écran de création de tâche, appuyez sur l'icône + en bas au centre de l'écran pour créer une nouvelle action. Pour la première action, allez dans Task -> Wait et laissez -le attendre 30 secondes. Cela représente la règle «30 secondes après le démarrage» utilisée dans Android pour définir l'état du volume sécurisé.

Ensuite, créez une action et allez à Plugin -> AutoTools -> Paramètres sécurisés. Appuyez sur le crayon pour ouvrir l’écran de configuration d’AutoTools. Aller à la configuration personnalisée. Pour le type de paramètre, entrez Global . Pour le nom, entrez audio_safe_volume_state. Pour le type d'entrée, faites-le int. 2. Assurez-vous de tout mettre correctement, la configuration doit correspondre à la capture d'écran du milieu ci-dessous. La commande doit être envoyée exactement telle que je l'ai écrite ou elle n'aura aucun effet.

Une fois que vous avez terminé, revenez au menu principal de Tasker, car nous devrons créer un autre profil. Celui que nous venons de créer représente les comptes lorsque l'état du volume sécurisé est défini 30 secondes après le démarrage, mais pour ceux d'entre vous qui ne redémarrez quasiment jamais votre appareil, nous allons créer un autre profil pour définir périodiquement cette valeur.


Désactiver l'avertissement sonore sécurisé périodiquement

Voici la description du profil pour ceux d’entre vous qui connaissent bien Tasker. Si vous n'êtes pas familier avec Tasker, lisez la suite pour obtenir des instructions pas à pas.

Désactiver Safe Audio périodiquement

 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 ] 

Créez un nouveau profil, cette fois avec un contexte Time . Malheureusement, je ne connais aucune méthode pour obtenir la durée cumulée actuelle de lecture multimédia sans racine. Nous allons donc simplement définir périodiquement l'état du volume sécurisé sur inactif toutes les 24 heures (… ce n'est pas comme si vous écoutiez réellement 20 heures de musique dans une période de 24 heures, non?). Quoi qu'il en soit, l'interface de Tasker pour définir une tâche périodique est assez terrible, mais l'essentiel est que vous souhaitiez régler le temps «De» et le temps «À» au même moment. De cette façon, Tasker la traitera comme si vous vouliez que la tâche ne soit déclenchée qu'une fois à une heure définie (je l'ai faite une minute avant minuit).

Pour ce qui est de la tâche, copiez simplement ce que vous avez fait pour l’action n ° 2 dans le profil précédent. Il n'y a pas d'action nouvelle ou différente dans ce cas, car nous ne faisons que modifier la valeur de cette propriété système globale une fois toutes les 24 heures.

Maintenant que vous avez configuré ces deux profils, vous avez terminé! Redémarrez votre téléphone et vous ne devriez plus voir l'avertissement «volume sans danger» lorsque vous branchez vos écouteurs.


Télécharger et importer dans Tasker

Comme toujours, nous fournissons le fichier XML des scripts que vous pouvez télécharger et importer. Téléchargez simplement les fichiers à partir du lien ci-dessous et enregistrez-les n'importe où sur votre stockage interne. Ouvrez Tasker et désactivez le mode Débutant dans Préférences. Retournez ensuite à l'écran principal et appuyez longuement sur l'onglet «Profil» en haut. Vous devriez voir une fenêtre contextuelle avec l’une des options «Importer». Appuyez dessus et naviguez jusqu’à l’emplacement où vous avez enregistré les fichiers .prf.xml et sélectionnez ce fichier à importer. Répétez l'opération pour le deuxième profil.

Télécharger le profil 'Désactiver l'avertissement sonore au démarrage' Télécharger le profil 'Désactiver l'avertissement sonore périodique'

Nous espérons que vous trouverez cette astuce utile. Faites-nous savoir dans les commentaires ci-dessous si cela fonctionne pour vous!