Kako samodejno onemogočiti opozorilo o veliki glasnosti brez root-ja

Vadnica o tem, kako onemogočiti opozorilo o visoki glasnosti ali varnem zvoku, ki je obvezno na napravah, prodanih v EU. To deluje na vseh napravah brez korena.

Tisti, ki živite v eni od držav članic Evropske unije, ste verjetno naleteli na opozorilo, ko ste poskušali povečati glasnost slušalk, kot je prikazano na zgornji sliki.

V skladu s predpisi, ki jih je določil Evropski odbor za elektrotehnično standardizacijo (CENELEC), vse elektronske naprave z možnostjo predvajanja medijev, prodane po februarju 2013, morajo imeti privzeto raven izhodne glasnosti največ 85 dB. Uporabniki se lahko odločijo, da opozorilo preglasijo in povečajo glasnost na največ 100 dB, vendar se mora pri tem opozorilo znova prikazati po 20 urah predvajanja glasbe.

Čeprav se ne bomo spuščali v razpravo o učinkovitosti te uredbe pri spodbujanju dobrega zdravje, uporabniki, ki se pogosto odločijo zaobiti to opozorilo, se pogosto sprašujejo, ali je ta postopek mogoč avtomatizirano. Obstaja veliko primerov, ko je precej nadležno, da se morate ročno strinjati s preglasitvijo omejitve glasnosti, na primer, ko začnete predvajanje glasbe na daljavo v napravi Bluetooth, zato smo se želeli lotiti odkrivanja načina, kako to samodejno zaobiti Opozorilo.

Rešitve za obid "varne omejitve glasnosti" že obstajajo, če iščete po naših forumih, vendar so do zdaj vse rešitve zahtevale, da namestite Xposed Modul. To nujno omejuje, kdo ga lahko uporablja, saj Xposed Framework zahteva, da imate korenski dostop (kar pomeni odklenjen zagonski nalagalnik na večini telefonov), kot tudi uporabo različic Androida pred Nougat. Toda po kopanju v AOSP in različnih sistemskih nastavitvah sem odkril način, kako zaobiti omejitev visoke glasnosti/varnega zvoka na vseh napravah, ne da bi potrebovali root.

Z upoštevanjem tega vodnika sprejemate vsa tveganja, povezana s poslušanjem medijev pri visoki glasnosti.


Vadnica za obvod varnega zvočnega opozorila

Če ste prebrali moj prejšnji članek o omogočanje potopnega načina brez korenskega dostopa, potem ste se morda začeli poigravati z nekaterimi nastavitvami, ki jih lahko najdete skrite v telefonu. Če še niste, vam toplo priporočam, da to storite, saj sem ugotovil, da ima skoraj vsaka naprava ogromno dobrot, ki samo čakajo, da jih odkrijete. Ta trik ni nič drugačen, saj bomo uporabili sistemsko lastnost, da zaobidemo varno zvočno opozorilo.

Natančneje, spreminjali bomo sistem. Globalna lastnina audio_safe_volume_state tako ob zagonu kot občasno, tako da bo Android vedno mislil, da ste privolili v obhod opozorila. Ta lastnost je opredeljeno v AOSP, ki ga objavljamo spodaj. Ta lastnost lahko prevzame več stanj, in sicer od 0 do 3. 30 sekund po zagonu ali po vsakih 20 urah neprekinjenega predvajanja glasbe je stanje nastavljeno na '0' ali 'not configured.' Nato je nastavljen na '1' za 'onemogočeno' ali '3' za 'omogočeno', odvisno od vašega Mobilna koda države. Če živite v EU, je ta lastnost privzeto nastavljena na »3«, vendar se spremeni v »2« za »neaktivno«, kadar koli uporabnik ročno zaobide opozorilo o glasnosti. Vrednost te lastnosti bomo spremenili v stanje 'neaktivno' (če se sprašujete, sprememba v 'onemogočeno' zame nikoli ni delovala).


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

Preberi več

Najprej boste morali namestiti Tasker in AutoTools tako da lahko avtomatiziramo ta trik. Tehnično je mogoče uporabiti katero koli drugo aplikacijo za avtomatizacijo razen Taskerja, vendar poznam samo Tasker, tako da boste morali prilagoditve opraviti sami, če raje uporabljate drugo aplikacijo. Vendar je AutoTools ključnega pomena za ta trik, saj nam bo ta vtičnik omogočil nadzor nad varnimi nastavitvami v naši napravi.

Kot je razloženo v mojem članku o preklapljanju potopnega načina, moramo odobriti WRITE_SECURE_SETTINGS dovoljenje za AutoTools. To je zato, ker je ukaz za nadzor stanja glasnosti varnega zvoka definiran pod nastavitve. Globalno razreda, čeprav je natančna sintaksa za ukaz skrita v AOSP (tako kot je bila za potopni način). Če ste že odobrili dovoljenje WRITE_SECURE_SETTINGS za AutoTools, potem ko ste prebrali mojo prejšnjo vadnico o poglobljenem načinu, potem lahko preskočite naslednji razdelek. Če ne, ga boste morali nastaviti.


V Androidovem sistemu za upravljanje dovoljenj aplikacije določijo dovoljenja, ki jih želijo dodeliti v datoteki Manifest. Uporabniki lahko nato dodelijo ali zavrnejo dovoljenja ob namestitvi (pred Marshmallow) ali na zahtevo (Marshmallow+). Vendar pa obstajajo določena dovoljenja, ki jih aplikacijam ni mogoče podeliti, tudi če to zahtevajo v Manifestu, kot npr WRITE_SECURE_SETTINGS. To je zato, ker bi podelitev tako zmogljivega dovoljenja kateri koli aplikaciji dala tej aplikaciji veliko nadzora nad vašo napravo.

Obstaja pa ena rešitev, ki jo lahko uporabimo za dodelitev dovoljenja WRITE_SECURE_SETTINGS kateri koli aplikaciji, ki jo želimo. Z uporabo ADB upravitelj paketov (pm) lahko podelimo poljubno dovoljenje kateri koli aplikaciji, ki jo želimo (pod pogojem, da aplikacija to dovoljenje zahteva v datoteki Manifest).

Prva stvar, ki jo boste morali storiti, je namestite binarno datoteko ADB na vaš računalnik, ki mu sledi pravi gonilnik za vašo napravo. Nato v možnostih za razvijalce omogočite razhroščevanje USB (pojdite na Nastavitve --> O telefonu in se 7-krat dotaknite številke gradnje, če tega še niste storili) in povežite telefon z računalnikom. Na koncu pošljite naslednji ukaz, ko odprete terminal:

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

Zdaj bo AutoTools lahko spremenil vse globalne, varne ali sistemske nastavitve v vaši napravi. S temi nastavitvami in seznamom razpoložljivih nastavitev se lahko igrate na različne načine vsaka kategorija je popolnoma odvisna od vaše naprave in programske opreme, vendar je ta razprava za drugo čas. V vsakem primeru vam bomo pokazali, kako uporabljati AutoTools za nadzor stanja varne glasnosti.


Onemogočanje opozorila o varnem zvoku ob zagonu

Tukaj je opis profila za tiste, ki poznate Tasker. Če niste seznanjeni s Taskerjem, preberite navodila po korakih.

Onemogoči varen zvok ob zagonu

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 ]

Preberi več

Odpri Tasker, da lahko ustvarimo nov profil. V spodnjem desnem kotu tapnite ikono + ikono za ustvarjanje novega profila. Dodajte novo Dogodek kontekst in pojdite na Tasker --> Monitor Start. Uporabljamo ta kontekst dogodka, ki se sproži, ko se Tasker zažene, namesto konteksta dogodka, ki se aktivira, ko se telefon zažene, ker je prvi veliko bolj zanesljiv kot drugi.

V vsakem primeru pritisnite gumb za nazaj, saj bomo zdaj ustvarili nalogo, povezano s tem profilom. Nalogo poimenujte poljubno, saj ni pomembno. Ko odprete zaslon za ustvarjanje naloge, pritisnite na + ikono na sredini spodnjega dela zaslona, ​​da ustvarite novo dejanje. Za prvo dejanje pojdite na Naloga --> Počakaj in naj počaka 30 sekund. To upošteva pravilo "30 sekund po zagonu", ki se uporablja v sistemu Android za nastavitev stanja varne glasnosti.

Nato ustvarite novo dejanje in pojdite na Plugin --> AutoTools --> Secure Settings. Pritisnite svinčnik, da odprete konfiguracijski zaslon za AutoTools. Pojdi do Nastavitev po meri. Za vrsto nastavitve vnesite Globalno. Za Ime vnesite audio_safe_volume_state. Za vrsto vnosa ga naredite int. Za vrednost naredite to 2. Preverite, ali ste vse pravilno vstavili, konfiguracija se mora ujemati s spodnjim srednjim posnetkom zaslona. Ukaz je treba poslati točno kot sem napisal, sicer ne bo vplivalo.

Ko končate, se vrnite v glavni meni Taskerja, saj bomo morali ustvariti drug profil. Tisti, ki smo ga pravkar ustvarili, upošteva, ko je stanje varne glasnosti nastavljeno 30 sekund po zagonu, vendar za tisti med vami, ki skoraj nikoli ne znova zaženete svoje naprave, bomo naredili še en profil, da to občasno nastavimo vrednost.


Občasno onemogočite opozorilo o varnem zvoku

Tukaj je opis profila za tiste, ki poznate Tasker. Če niste seznanjeni s Taskerjem, preberite navodila po korakih.

Občasno onemogočite varni zvok

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 ]

Preberi več

Ustvarite nov profil, tokrat z a Čas kontekstu. Na žalost ne poznam nobene metode za pridobitev trenutnega skupnega časa predvajanja predstavnosti brez root, tako da bomo namesto tega samo občasno nastavili stanje varne glasnosti na neaktivno enkrat na 24 ur (... ni tako, kot da dejansko poslušate 20 ur glasbe v 24 urah, kajne?). Kakorkoli že, Taskerjev vmesnik za nastavitev periodične naloge je nekako grozen, vendar je bistvo tega, da želite nastaviti čas "Od" in "Do" na isti čas. Na ta način ga bo Tasker obravnaval tako, kot da želite, da se opravilo sproži samo enkrat ob določenem času (to sem naredil 1 minuto pred polnočjo).

Kar zadeva nalogo, preprosto kopirajte, kar ste naredili za dejanje št. 2 v prejšnjem profilu. V tem primeru ni novega ali drugačnega dejanja, saj je vse, kar počnemo, spreminjanje vrednosti te globalne sistemske lastnosti vsakih 24 ur.

Zdaj, ko ste nastavili oba ta profila, ste končali! Ponovno zaženite telefon in zdaj ne bi smeli več videti opozorila "varna glasnost", ko priključite slušalke.


Prenesite in uvozite v Tasker

Kot vedno nudimo datoteko XML skriptov, ki jo lahko prenesete in uvozite. Preprosto prenesite datoteke s spodnje povezave in jih shranite kamor koli v notranji pomnilnik. Odprite Tasker in onemogočite začetni način v nastavitvah. Nato se vrnite na glavni zaslon in dolgo pritisnite zavihek »Profil« na vrhu. Morali bi videti pojavno okno z eno od možnosti »Uvozi«. Dotaknite se tega in poiščite mesto, kjer ste shranili datoteke .prf.xml, in izberite to datoteko za uvoz. Ponovite za drugi profil.

Prenesite profil »Onemogoči opozorilo o varnem zvoku ob zagonu«.

Prenesite profil »Občasno onemogoči opozorilo o varnem zvoku«.

Upamo, da vam bo ta nasvet koristen. Sporočite nam v spodnjih komentarjih, če vam to ustreza!