Kako automatski onemogućiti upozorenje o velikoj glasnoći bez root-a

Vodič o tome kako onemogućiti upozorenje o visokoj glasnoći ili sigurnom zvuku koje je potrebno na uređajima koji se prodaju u EU. Ovo radi na svim uređajima bez roota.

Oni od vas koji žive u nekoj od zemalja članica Europske unije vjerojatno su naišli na upozorenje kada pokušavate povećati glasnoću slušalica kao što je prikazano na gornjoj slici značajke.

Prema propisima Europskog odbora za elektrotehničku standardizaciju (CENELEC), svi elektronički uređaji koji mogu reproducirati medije prodani nakon veljače 2013. moraju imati zadanu izlaznu razinu glasnoće od najviše 85 dB. Korisnici mogu odlučiti poništiti upozorenje kako bi povećali glasnoću na maksimalno 100 dB, ali pritom se upozorenje mora ponovno pojaviti nakon 20 sati reprodukcije glazbe.

Iako se nećemo upuštati u raspravu o učinkovitosti ove uredbe u promicanju dobrog zdravlje, korisnici koji često odluče zaobići ovo upozorenje često se pitaju može li se ovaj proces izvesti automatizirano. Postoje mnogi slučajevi u kojima je prilično neugodno morati ručno pristati na poništavanje ograničenja glasnoće, primjerice kada pokrenete daljinsku reprodukciju glazbe na Bluetooth uređaju, pa smo htjeli pronaći način da to automatski zaobiđemo upozorenje.

Rješenja za zaobilaženje "sigurnog ograničenja glasnoće" već postoje ako pretražujete naše forume, ali do sada su sva rješenja zahtijevala instalirati Xposed Modul. Ovo nužno ograničava tko ga može koristiti, budući da Xposed Framework zahtijeva da imate root pristup (što znači otključan bootloader na većini telefona), kao i da ste na verzijama Androida prije Nougata. Ali nakon kopanja po AOSP-u i raznim postavkama sustava, otkrio sam način zaobići ograničenje velike glasnoće/sigurnog zvuka na svim uređajima bez potrebe za rootom.

Slijedeći ovaj vodič, prihvaćate sve rizike povezane sa slušanjem medija na visokoj glasnoći.


Vodič za zaobilaženje sigurnog audio upozorenja

Ako ste pročitali moj prethodni članak o omogućavanje Immersive Mode bez root pristupa, možda ste se počeli igrati s nekim postavkama koje možete pronaći skrivene na svom telefonu. Ako niste, toplo vam preporučujem da to učinite, jer sam otkrio da gotovo svaki uređaj ima gomilu dobrih stvari koje samo čekaju da budu otkrivene. Ovaj trik se ne razlikuje jer ćemo koristiti svojstvo sustava da zaobiđemo sigurno zvučno upozorenje.

Konkretno, modificirat ćemo Sustav. Globalno vlasništvo audio_sigurno_stanje_glasnoće i pri pokretanju i povremeno tako da će Android uvijek misliti da ste pristali zaobići upozorenje. Ova nekretnina je definiran u AOSP-u, koju reproduciramo u nastavku. Postoji nekoliko stanja koje ova nekretnina može primiti, u rasponu od 0-3. 30 sekundi nakon pokretanja ili nakon svakih 20 sati kontinuirane reprodukcije glazbe, stanje je postavljeno na '0' ili 'nije konfigurirano.' Zatim se postavlja na '1' za 'onemogućeno' ili '3' za 'omogućeno', ovisno o vašem Mobilni pozivni broj zemlje. Ako živite u EU-u, ovo je svojstvo postavljeno na "3" prema zadanim postavkama, ali se mijenja na "2" za "neaktivno" kad god korisnik ručno zaobiđe upozorenje o glasnoći. Promijenit ćemo vrijednost ovog svojstva u 'neaktivno' stanje (promjena u 'onemogućeno' nikad mi nije uspjela, ako se pitate).


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

Čitaj više

Najprije ćete morati instalirati Tasker i AutoTools tako da možemo automatizirati ovaj trik. Tehnički, može se koristiti bilo koja druga aplikacija za automatizaciju osim Taskera, ali ja sam upoznat samo s Taskerom pa ćete morati sami napraviti prilagodbe ako više volite koristiti drugu aplikaciju. AutoTools je, međutim, ključan za ovaj trik jer će nam ovaj dodatak omogućiti kontrolu sigurnih postavki na našem uređaju.

Kao što je objašnjeno u mom članku o uključivanju imerzivnog načina rada, moramo odobriti WRITE_SECURE_SETTINGS dopuštenje za AutoTools. To je zato što je naredba za kontrolu sigurnog stanja glasnoće zvuka definirana pod postavke. Globalno klase, iako je točna sintaksa za naredbu skrivena u AOSP-u (baš kao što je bila za Immersive Mode). Ako ste već dali dozvolu WRITE_SECURE_SETTINGS za AutoTools nakon što ste pročitali moj prethodni vodič o Immersive Modeu, tada možete preskočiti sljedeći odjeljak. Ako ne, morat ćete ga postaviti.


Pod Androidovim sustavom upravljanja dozvolama, aplikacije definiraju dozvole koje žele dobiti u datoteci manifesta. Korisnici tada mogu dati ili odbiti dopuštenja pri instalaciji (prije Marshmallow) ili na zahtjev (Marshmallow+). Međutim, postoje određena dopuštenja koja se aplikacijama ne mogu dati čak i ako to zatraže u Manifestu, kao što je WRITE_SECURE_SETTINGS. To je zato što bi davanje toliko moćne dozvole bilo kojoj aplikaciji dalo tonu kontrole nad vašim uređajem.

Ali postoji jedno zaobilazno rješenje koje možemo upotrijebiti za dodjelu dopuštenja WRITE_SECURE_SETTINGS bilo kojoj aplikaciji koju želimo. Korištenjem ADB-a upravitelj paketa (pm) alata, možemo dodijeliti bilo koje dopuštenje bilo kojoj aplikaciji koju želimo (pod uvjetom da aplikacija zahtijeva to dopuštenje u datoteci manifesta).

Prva stvar koju ćete morati učiniti je instalirajte ADB binarnu datoteku na vaše računalo nakon čega slijedi pravi upravljački program za vaš uređaj. Zatim omogućite USB Debugging u Developer Options (idite na Settings --> About Phone i dodirnite Build number 7 puta ako već niste) i povežite telefon s računalom. Na kraju, pošaljite sljedeću naredbu kada otvorite terminal:

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

Sada će AutoTools imati mogućnost mijenjanja bilo koje Globalne, Secure ili System postavke na vašem uređaju. Postoje različiti načini na koje se možete igrati s ovim postavkama i popisom dostupnih postavki svaka kategorija u potpunosti ovisi o vašem uređaju i verziji softvera, ali ta je rasprava za drugu temu vrijeme. U svakom slučaju, nastavit ćemo dalje i pokazati vam kako koristiti AutoTools za kontrolu stanja sigurnog volumena.


Onemogućivanje upozorenja sigurnog zvuka pri pokretanju

Ovdje je opis profila za one od vas koji su upoznati s Taskerom. Ako niste upoznati s Taskerom, pročitajte upute korak po korak.

Onemogući siguran zvuk pri pokretanju

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 ]

Čitaj više

Otvori Tasker da možemo napraviti novi profil. U donjem desnom kutu dodirnite + ikona za stvaranje novog profila. Dodaj novi Događaj kontekstu i idite na Tasker --> Monitor Start. Koristimo ovaj kontekst događaja koji se aktivira kada se Tasker pokrene, a ne kontekst događaja koji se aktivira kada se telefon pokrene jer je prvi daleko pouzdaniji od drugog.

U svakom slučaju, pritisnite gumb za povratak jer ćemo sada stvoriti zadatak povezan s ovim profilom. Nazovite Zadatak bilo kako jer to nije važno. Nakon što uđete u zaslon za izradu zadatka, pritisnite na + ikonu u donjem srednjem dijelu zaslona za stvaranje nove radnje. Za prvu radnju idite na Zadatak --> Čekaj i neka čeka 30 sekundi. Ovo objašnjava pravilo "30 sekundi nakon pokretanja" koje se koristi u Androidu za postavljanje sigurnog stanja glasnoće.

Zatim stvorite novu radnju i idite na Dodatak --> AutoTools --> Sigurne postavke. Pritisnite olovku da biste otvorili konfiguracijski zaslon za AutoTools. Ići Prilagođena postavka. Za vrstu postavke unesite Globalno. Za Naziv unesite audio_sigurno_stanje_glasnoće. Za vrstu unosa napravite ga int. Za vrijednost učinite to 2. Provjerite jeste li sve ispravno postavili, konfiguracija bi trebala odgovarati srednjoj snimci zaslona u nastavku. Naredba mora biti poslana točno kao što sam napisao ili neće imati nikakvog utjecaja.

Kada završite, vratite se na glavni izbornik Taskera jer ćemo morati stvoriti još jedan profil. Onaj za koji smo upravo kreirali računa kada je stanje sigurnog volumena postavljeno 30 sekundi nakon pokretanja, ali za oni od vas koji gotovo nikada ne ponovno pokreću svoj uređaj, napravit ćemo još jedan profil da ovo povremeno postavljamo vrijednost.


Povremeno onemogućite upozorenje o sigurnom zvuku

Ovdje je opis profila za one od vas koji su upoznati s Taskerom. Ako niste upoznati s Taskerom, pročitajte upute korak po korak.

Povremeno onemogućite siguran zvuk

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 ]

Čitaj više

Napravite novi profil, ovaj put s a Vrijeme kontekst. Nažalost, nije mi poznat nijedan način za dobivanje trenutnog kumulativnog vremena reprodukcije medija bez root, pa ćemo umjesto toga samo povremeno postavljati sigurno stanje volumena na neaktivno jednom svaka 24 sata (... nije kao da vi zapravo slušate 20 sati glazbe unutar 24 sata, zar ne?). U svakom slučaju, Taskerovo sučelje za postavljanje periodičnog zadatka je užasno, ali bit je da želite postaviti vrijeme "Od" i "Do" na isto vrijeme. Na ovaj način, Tasker će ga tretirati kao da želite da se zadatak aktivira samo jednom u određeno vrijeme (napravio sam to 1 minutu prije ponoći).

Što se tiče zadatka, samo kopirajte ono što ste učinili za radnju #2 u prethodnom profilu. Nema nove ili drugačije radnje u ovom slučaju, jer sve što radimo jest mijenjanje vrijednosti ovog svojstva Globalnog sustava jednom svaka 24 sata.

Sada kada ste postavili oba ova profila, gotovi ste! Ponovno pokrenite telefon i sada više ne biste trebali vidjeti upozorenje "sigurna glasnoća" kada uključite slušalice.


Preuzmite i uvezite u Tasker

Kao i uvijek, osiguravamo XML datoteku skripti koju možete preuzeti i uvesti. Jednostavno preuzmite datoteke s donje veze i spremite ih bilo gdje u svoju internu pohranu. Otvorite Tasker i onemogućite početnički način rada u postavkama. Zatim se vratite na glavni zaslon i dugo pritisnite karticu "Profil" na vrhu. Trebali biste vidjeti skočni prozor s jednom od opcija "Uvoz". Dodirnite to i potražite mjesto na kojem ste spremili .prf.xml datoteke i odaberite tu datoteku za uvoz. Ponovite za drugi profil.

Preuzmite profil "Onemogući upozorenje sigurnog zvuka pri pokretanju".

Preuzmite profil "Povremeno onemogući upozorenje o sigurnom zvuku".

Nadamo se da će vam ovaj savjet biti koristan. Javite nam u komentarima ispod ako vam ovo odgovara!