Hur man automatiskt inaktiverar varningen för hög volym utan rot

En handledning om hur du inaktiverar varningen för hög volym eller säkert ljud som krävs på enheter som säljs i EU. Detta fungerar på alla enheter utan root.

Ni som bor i ett av EU: s medlemsländer har förmodligen stött på varningen när de försöker höja volymen på hörlurarna som visas i funktionsbilden ovan.

Enligt bestämmelser som fastställts av European Committee for Electrotechnical Standarisation (CENELEC), allt elektroniskt enheter som kan spela upp media sålda efter februari 2013 måste ha en standardutgångsvolym på maximalt 85 dB. Användare kan välja att åsidosätta varningen för att höja volymen till maximalt 100 dB, men då måste varningen dyka upp igen efter 20 timmars musikuppspelning.

Även om vi inte kommer att gå in i en debatt om effektiviteten av denna förordning när det gäller att främja bra hälsa, användare som ofta väljer att kringgå denna varning undrar ofta om denna process kan vara automatiserad. Det finns många fall där det är ganska irriterande att manuellt gå med på att åsidosätta volymgränsen, till exempel när du startar musikuppspelning på distans på en Bluetooth-enhet, så vi ville komma på ett sätt att automatiskt kringgå detta varning.

Lösningar för att kringgå den "säkra volymgränsen" finns redan om du söker i våra forum, men hittills har alla lösningar krävt att du Installera en Xposed Modul. Detta begränsar med nödvändighet vem som kan använda det, eftersom Xposed Framework kräver att du har root-åtkomst (vilket innebär en olåst bootloader på de flesta telefoner) samt att du är på pre-Nougat-versioner av Android. Men efter att ha grävt i AOSP och olika systeminställningar har jag upptäckt ett sätt att kringgå den höga volymen/säkra ljudgränsen på alla enheter utan att kräva root.

Genom att följa den här guiden accepterar du alla risker med att lyssna på media på höga volymnivåer.


Handledning för förbikoppling av säker ljudvarning

Om du har läst min tidigare artikel om aktiverar Immersive Mode utan root-åtkomst, då kanske du har börjat leka med några av de inställningar du kan hitta dolda på din telefon. Om du inte har det, rekommenderar jag starkt att du gör det, eftersom jag har upptäckt att nästan varje enhet har massor av godsaker som bara väntar på att bli upptäckt. Det här tricket är inte annorlunda eftersom vi kommer att använda en systemegenskap för att kringgå den säkra ljudvarningen.

Specifikt kommer vi att modifiera systemet. Global egendom audio_safe_volume_state både vid uppstart och regelbundet så Android kommer alltid att tro att du har samtyckt till att kringgå varningen. Denna fastighet är definieras i AOSP, som vi återger nedan. Det finns flera tillstånd som den här egenskapen kan ta, allt från 0-3. 30 sekunder efter start eller efter var 20:e timmes kontinuerlig musikuppspelning, är tillståndet inställt på '0' eller 'ej konfigurerat'. Den ställs sedan in på '1' för 'inaktiverad' eller '3' för 'enabled' beroende på din Mobil landskod. Om du bor i EU är den här egenskapen inställd på '3' som standard men ändras till '2' för 'inaktiv' när användaren manuellt kringgår volymvarningen. Vi kommer att ändra värdet på den här egenskapen till "inaktiv" status (att ändra den till "inaktiverad" fungerade aldrig för mig, om du undrar).


//
// 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

Läs mer

Du måste först installera Tasker och AutoTools så vi kan automatisera detta trick. Tekniskt sett kan vilken annan automationsapp som helst förutom Tasker användas, men jag är bara bekant med Tasker så du måste göra justeringar på egen hand om du föredrar att använda en annan app. AutoTools är dock avgörande för det här tricket eftersom det här plugin-programmet tillåter oss att styra säkra inställningar på vår enhet.

Som förklaras i min artikel om att växla uppslukande läge, måste vi bevilja WRITE_SECURE_SETTINGS tillstånd till AutoTools. Detta beror på att kommandot för att kontrollera det säkra ljudvolymtillståndet definieras under Inställningar. Global klass, även om den exakta syntaxen för kommandot är dold i AOSP (precis som det var för Immersive Mode). Om du redan har gett tillståndet WRITE_SECURE_SETTINGS till AutoTools efter att ha läst min tidigare handledning om uppslukande läge, kan du hoppa över nästa avsnitt. Om inte, måste du ställa in det.


Under Androids behörighetshanteringssystem definierar applikationer de behörigheter de vill beviljas i Manifest-filen. Användare kan sedan bevilja eller neka behörigheter vid installation (pre-Marshmallow) eller på begäran (Marshmallow+). Det finns dock vissa tillstånd att ansökningar inte kan beviljas även om de begär det i Manifestet, som t.ex WRITE_SECURE_SETTINGS. Detta beror på att att ge alla appar en så kraftfull behörighet som detta skulle ge den appen massor av kontroll över din enhet.

Men det finns en lösning som vi kan använda för att ge WRITE_SECURE_SETTINGS behörighet till vilken app vi vill. Genom att använda ADB pakethanterare (pm) verktyg, kan vi ge vilken behörighet som helst till vilken applikation vi vill (förutsatt att applikationen begär det tillståndet i Manifest-filen).

Det första du behöver göra är installera ADB-binären på din dator följt av rätt drivrutin för din enhet. Aktivera sedan USB-felsökning i utvecklaralternativ (gå till Inställningar --> Om telefon och tryck på Byggnummer 7 gånger om du inte redan har gjort det) och anslut din telefon till din dator. Slutligen, skicka följande kommando när du har öppnat en terminal:

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

Nu kommer AutoTools att ha möjlighet att ändra alla globala, säkra eller systeminställningar på din enhet. Det finns olika sätt du kan leka med dessa inställningar och listan över tillgängliga inställningar i varje kategori beror helt på din enhet och programvara, men den diskussionen är för en annan tid. I vilket fall som helst kommer vi att gå vidare och visa dig hur du använder AutoTools för att kontrollera det säkra volymtillståndet.


Inaktiverar säker ljudvarning vid uppstart

Här är beskrivningen av profilen för dig som är bekant med Tasker. Om du inte är bekant med Tasker, läs vidare för steg-för-steg-instruktioner.

Inaktivera Safe Audio on Boot

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 ]

Läs mer

Öppna Tasker så att vi kan skapa en ny profil. Klicka på i det nedre högra hörnet + ikon för att skapa en ny profil. Lägg till en ny Händelse sammanhang och gå till Tasker --> Övervakningsstart. Vi använder denna händelsekontext som utlöses när Tasker startar upp snarare än händelsekontexten som aktiveras när telefonen startar eftersom den förra är mycket mer tillförlitlig än den senare.

I vilket fall som helst, tryck på bakåtknappen eftersom vi nu kommer att skapa en uppgift som är kopplad till denna profil. Namnge uppgiften vad som helst eftersom det inte spelar någon roll. När du kommer in på skärmen för att skapa uppgifter, tryck på + ikonen längst ned i mitten av skärmen för att skapa en ny åtgärd. För den första åtgärden, gå till Uppgift --> Vänta och låt det vänta på 30 sekunder. Detta står för regeln "30 sekunder efter start" som används i Android för att ställa in det säkra volymtillståndet.

Skapa sedan en ny åtgärd och gå till Plugin --> Autoverktyg --> Säkra inställningar. Tryck på pennan för att öppna konfigurationsskärmen för AutoTools. Gå till Anpassad inställning. Ange för Inställningstyp Global. Ange för Namn audio_safe_volume_state. För Input Type gör det int. För värdet gör det 2. Kontrollera att du har lagt allt rätt, konfigurationen bör matcha mitten av skärmdumpen nedan. Kommandot måste skickas exakt som jag har skrivit annars kommer det inte att påverka.

När du är klar, gå tillbaka till huvudmenyn i Tasker eftersom vi måste skapa en annan profil. Den vi just skapade står för när det säkra volymtillståndet är inställt 30 sekunder efter start, men för de av er som nästan aldrig startar om din enhet kommer att skapa en annan profil för att med jämna mellanrum ställa in detta värde.


Inaktivera Safe Audio Warning med jämna mellanrum

Här är beskrivningen av profilen för dig som är bekant med Tasker. Om du inte är bekant med Tasker, läs vidare för steg-för-steg-instruktioner.

Inaktivera säkert ljud med jämna mellanrum

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 ]

Läs mer

Skapa en ny profil, denna gång med en Tid sammanhang. Tyvärr är jag inte medveten om någon metod för att få den nuvarande kumulativa tiden för mediauppspelning utan root, så vi kommer istället bara periodvis att ställa in det säkra volymtillståndet till inaktivt en gång var 24:e timme (... det är inte så att ni faktiskt lyssnar på 20 timmar musik inom en 24-timmarsperiod, eller hur?). Hur som helst, Taskers gränssnitt för att ställa in en periodisk uppgift är ganska hemskt, men kärnan i det är att du vill ställa in "Från" och "Till" tiden till samma tid. På så sätt kommer Tasker att behandla det som att du vill att uppgiften bara ska utlösas en gång vid en bestämd tid (jag gjorde det 1 minut före midnatt).

När det gäller uppgiften, kopiera bara vad du gjorde för åtgärd #2 i föregående profil. Det finns ingen ny eller annorlunda åtgärd i det här fallet, eftersom allt vi gör är att ändra värdet på denna globala systemegenskap en gång var 24:e timme.

Nu när du har ställt in båda dessa profiler är du klar! Starta om telefonen och du bör nu inte längre se varningen "säker volym" när du kopplar in dina hörlurar.


Ladda ner och importera till Tasker

Som alltid tillhandahåller vi skriptens XML-fil som du kan ladda ner och importera. Ladda bara ner filerna från länken nedan och spara dem var som helst på ditt interna minne. Öppna Tasker och inaktivera nybörjarläge i Inställningar. Gå sedan tillbaka till huvudskärmen och tryck länge på fliken "Profil" upptill. Du bör se ett popup-fönster med ett av alternativen "Importera". Tryck på det och bläddra till var du sparade .prf.xml-filerna och välj den filen att importera. Upprepa för den andra profilen.

Ladda ner profilen "Inaktivera säker ljudvarning vid start".

Ladda ner profilen "Inaktivera säker ljudvarning periodiskt".

Vi hoppas att du tycker att det här tipset är användbart. Låt oss veta i kommentarerna nedan om detta fungerar för dig!