Sådan deaktiverer du automatisk advarsel om høj lydstyrke uden rod

En vejledning i, hvordan du deaktiverer advarslen om høj lydstyrke eller sikker lyd, som er påkrævet på enheder, der sælges i EU. Dette virker på alle enheder uden root.

De af jer, der bor i et af medlemslandene i Den Europæiske Union, er sandsynligvis stødt på advarslen, når de forsøger at hæve lydstyrken på dine hovedtelefoner som vist på billedet ovenfor.

I henhold til regler fastsat af European Committee for Electrotechnical Standarisation (CENELEC), alt elektronisk enheder, der er i stand til medieafspilning, der sælges efter februar 2013, skal have et standardudgangslydstyrkeniveau på maksimalt 85 dB. Brugere kan vælge at tilsidesætte advarslen for at øge lydstyrken til maksimalt 100 dB, men ved at gøre det skal advarslen dukke op igen efter 20 timers musikafspilning.

Selvom vi ikke kommer ind i en debat om effektiviteten af ​​denne forordning til at fremme gode sundhed, brugere, der ofte vælger at omgå denne advarsel, spekulerer ofte på, om denne proces kan være automatiseret. Der er mange tilfælde, hvor det er ret irriterende manuelt at skulle acceptere at tilsidesætte lydstyrkegrænsen, som når du starter musikafspilning eksternt på en Bluetooth-enhed, så vi ville gå i gang med at finde ud af en måde at omgå dette automatisk på advarsel.

Løsninger til at omgå "sikkerhedsvolumengrænsen" findes allerede, hvis du søger i vores fora, men indtil videre har alle løsningerne krævet, at du installere en Xposed modul. Dette begrænser nødvendigvis, hvem der kan bruge det, da Xposed Framework kræver, at du har root-adgang (hvilket betyder en ulåst bootloader på de fleste telefoner) samt at du er på pre-Nougat-versioner af Android. Men efter at have gravet i AOSP og forskellige systemindstillinger, har jeg opdaget en måde at omgå grænsen for høj lydstyrke/sikker lyd på alle enheder uden at kræve root.

Ved at følge denne vejledning accepterer du enhver risiko forbundet med at lytte til medier ved høje lydstyrkeniveauer.


Sikker lydadvarsel omgå selvstudie

Hvis du har læst min tidligere artikel om aktiverer Immersive Mode uden root-adgang, så er du måske begyndt at lege med nogle af de indstillinger, du kan finde skjult på din telefon. Hvis du ikke har, anbefaler jeg stærkt, at du gør det, da jeg har fundet ud af, at næsten alle enheder har et væld af lækkerier, der bare venter på at blive opdaget. Dette trick er ikke anderledes, da vi vil bruge en systemegenskab til at omgå den sikre lydadvarsel.

Konkret vil vi ændre systemet. Global ejendom audio_safe_volume_state både ved opstart og periodisk, så Android vil altid tro, at du har givet samtykke til at omgå advarslen. Denne ejendom er defineret i AOSP, som vi gengiver nedenfor. Der er flere tilstande, som denne ejendom kan tage, lige fra 0-3. 30 sekunder efter opstart eller efter hver 20. timers kontinuerlig musikafspilning, er tilstanden indstillet til '0' eller 'ikke konfigureret'. Den er derefter sat til '1' for 'deaktiveret' eller '3' for 'aktiveret' afhængigt af din Mobil landekode. Hvis du bor i EU, er denne egenskab indstillet til '3' som standard, men ændres til '2' for 'inaktiv', når brugeren manuelt omgår lydstyrkeadvarslen. Vi vil ændre værdien af ​​denne ejendom til tilstanden "inaktiv". (at ændre det til 'deaktiveret' virkede aldrig for mig, hvis du undrer dig).


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

Du skal først installere Tasker og Autoværktøjer så vi kan automatisere dette trick. Teknisk set kan enhver anden automatiseringsapp end Tasker bruges, men jeg er kun bekendt med Tasker, så du bliver nødt til at foretage justeringer på egen hånd, hvis du foretrækker at bruge en anden app. AutoTools er dog afgørende for dette trick, da dette plug-in giver os mulighed for at kontrollere Secure Settings på vores enhed.

Som forklaret i min artikel om at skifte fordybende tilstand, er vi nødt til at give det WRITE_SECURE_SETTINGS tilladelse til AutoTools. Dette skyldes, at kommandoen til styring af den sikre lydstyrketilstand er defineret under Indstillinger. Global klasse, selvom den nøjagtige syntaks for kommandoen er skjult i AOSP (ligesom det var for Immersive Mode). Hvis du allerede har givet WRITE_SECURE_SETTINGS-tilladelsen til AutoTools efter at have læst min tidligere tutorial om Immersive Mode, så kan du springe næste afsnit over. Hvis ikke, så bliver du nødt til at konfigurere det.


Under Androids tilladelsesstyringssystem definerer applikationer de tilladelser, de vil have tildelt i Manifest-filen. Brugere kan derefter give eller nægte tilladelser ved installation (præ-Marshmallow) eller efter anmodning (Marshmallow+). Der er dog visse tilladelser til, at ansøgninger ikke kan gives, selvom de anmoder om det i Manifestet, som f.eks WRITE_SECURE_SETTINGS. Dette skyldes, at hvis du giver enhver applikation en så kraftfuld tilladelse som dette, vil det give den app masser af kontrol over din enhed.

Men der er en løsning, som vi kan bruge til at give tilladelsen WRITE_SECURE_SETTINGS til enhver app, vi ønsker. Ved at bruge ADB'er pakkeansvarlig (pm) værktøj, kan vi give enhver tilladelse til enhver applikation, vi ønsker (forudsat at applikationen anmoder om denne tilladelse i Manifest-filen).

Den første ting du skal gøre er installer ADB binær på din computer efterfulgt af den rigtige driver til din enhed. Aktiver derefter USB-fejlfinding i Udviklerindstillinger (gå til Indstillinger --> Om telefon, og tryk på Byg nummer 7 gange, hvis du ikke allerede har gjort det) og tilslut din telefon til din computer. Send endelig følgende kommando, når du har åbnet en terminal:

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

Nu vil AutoTools have mulighed for at ændre enhver Global, Secure eller System-indstilling på din enhed. Der er forskellige måder, du kan lege med disse indstillinger og listen over tilgængelige indstillinger på hver kategori afhænger fuldstændig af din enhed og software build, men den diskussion er for en anden tid. Under alle omstændigheder vil vi fortsætte med at vise dig, hvordan du bruger AutoTools til at styre den sikre lydstyrketilstand.


Deaktivering af sikker lydadvarsel ved opstart

Her er beskrivelsen af ​​profilen til dig, der kender Tasker. Hvis du ikke er bekendt med Tasker, så læs videre for trin-for-trin instruktioner.

Deaktiver sikker lyd ved opstart

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 mere

Åbn Tasker, så vi kan oprette en ny profil. Tryk på i nederste højre hjørne + ikon for at oprette en ny profil. Tilføj en ny Begivenhed kontekst og gå til Tasker --> Monitor Start. Vi bruger denne begivenhedskontekst, som udløses, når Tasker starter, frem for begivenhedskonteksten, som aktiveres, når telefonen starter, fordi førstnævnte er langt mere pålidelig end sidstnævnte.

Under alle omstændigheder skal du trykke på tilbage-knappen, da vi nu vil oprette en opgave tilknyttet denne profil. Navngiv opgaven hvad som helst, da det er ligegyldigt. Når du kommer ind på skærmen til oprettelse af opgave, skal du trykke på + ikonet nederst i midten af ​​skærmen for at oprette en ny handling. For den første handling, gå til Opgave --> Vent og lad det vente på 30 sekunder. Dette tegner sig for reglen "30 sekunder efter opstart", der bruges i Android til at indstille den sikre lydstyrketilstand.

Opret derefter en ny handling og gå til Plugin --> Autoværktøjer --> Sikre indstillinger. Tryk på blyanten for at åbne konfigurationsskærmen for AutoTools. Gå til Brugerdefineret indstilling. Indtast Indstillingstype Global. Indtast for Navn audio_safe_volume_state. For Input Type gør det int. For Værdien gør det 2. Kontroller, at du har sat alt korrekt, konfigurationen skal matche det midterste skærmbillede nedenfor. Kommandoen skal sendes Nemlig som jeg har skrevet, ellers vil det ikke have nogen indflydelse.

Når du er færdig, skal du gå tilbage til hovedmenuen i Tasker, da vi bliver nødt til at oprette en anden profil. Den, vi lige har oprettet, tager højde for, når den sikre lydstyrketilstand er indstillet 30 sekunder efter opstart, men for de af jer, der næsten aldrig genstarter din enhed, laver vi en anden profil for med jævne mellemrum at indstille dette værdi.


Deaktiver Sikker lydadvarsel med jævne mellemrum

Her er beskrivelsen af ​​profilen til dig, der kender Tasker. Hvis du ikke er bekendt med Tasker, så læs videre for trin-for-trin instruktioner.

Deaktiver Sikker lyd med jævne mellemrum

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 mere

Opret en ny profil, denne gang med en Tid sammenhæng. Desværre er jeg ikke bekendt med nogen metode til at få den nuværende kumulative tid for medieafspilning uden root, så vi vil i stedet bare periodisk indstille den sikre lydstyrketilstand til inaktiv en gang hver 24 timer (... det er ikke sådan, at I rent faktisk lytter til 20 timers musik inden for en periode på 24 timer, vel?). Anyways, Taskers grænseflade til at indstille en periodisk opgave er noget forfærdelig, men kernen i det er, at du vil indstille "Fra" og "Til" tid til samme tid. På denne måde vil Tasker behandle det, som om du ønsker, at opgaven kun skal udløses én gang på et bestemt tidspunkt (jeg lavede det 1 minut før midnat).

Hvad angår opgaven, skal du bare kopiere, hvad du gjorde for handling #2 i den forrige profil. Der er ingen ny eller anderledes handling i dette tilfælde, da alt, hvad vi gør, er at ændre værdien af ​​denne globale systemejendom en gang hver 24. time.

Nu hvor du har oprettet begge disse profiler, er du færdig! Genstart din telefon og du skulle nu ikke længere se advarslen "sikker lydstyrke", når du tilslutter dine hovedtelefoner.


Download og importer til Tasker

Som altid leverer vi scriptets XML-fil, som du kan downloade og importere. Du skal blot downloade filerne fra linket nedenfor og gemme dem hvor som helst på dit interne lager. Åbn Tasker og deaktiver begyndertilstand i Præferencer. Gå derefter tilbage til hovedskærmen og tryk længe på fanen "Profil" øverst. Du skulle se en pop-up med en af ​​mulighederne "Importer". Tryk på det, og find det sted, hvor du gemte .prf.xml-filerne, og vælg den fil, der skal importeres. Gentag for den anden profil.

Download profilen 'Deaktiver sikker lydadvarsel ved opstart'

Download profilen 'Deaktiver sikker lydadvarsel periodisk'

Vi håber, du finder dette tip nyttigt. Fortæl os i kommentarerne nedenfor, hvis dette virker for dig!