Kaip automatiškai išjungti didelio garsumo įspėjimą be šaknies

Mokomoji medžiaga, kaip išjungti didelio garsumo arba saugaus garso įspėjimą, kuris būtinas įrenginiuose, parduodamuose ES. Tai veikia visuose įrenginiuose be šaknies.

Tie iš jūsų, gyvenantys vienoje iš Europos Sąjungos valstybių narių, tikriausiai susidūrėte su įspėjimu bandydami padidinti ausinių garsumą, kaip parodyta aukščiau esančiame paveikslėlyje.

Pagal Europos elektrotechnikos standartizacijos komiteto (CENELEC) nustatytas taisykles, visos el. įrenginių, galinčių atkurti mediją, parduodamų po 2013 m. vasario mėn., numatytasis išvesties garsumo lygis turi būti ne didesnis kaip 85 dB. Vartotojai gali pasirinkti nepaisyti įspėjimo, kad padidintų garsumą iki daugiausiai 100 dB, tačiau tai darant įspėjimas turi vėl pasirodyti po 20 muzikos atkūrimo valandų.

Nors nesileisime į diskusijas apie šio reglamento veiksmingumą skatinant gėrį sveikatos, vartotojai, kurie dažnai pasirenka apeiti šį įspėjimą, dažnai susimąsto, ar toks procesas gali būti automatizuotas. Yra daug atvejų, kai gana erzina rankiniu būdu sutikti nepaisyti garsumo limito, pvz., kai pradedate muzikos atkūrimas nuotoliniu būdu naudojant „Bluetooth“ įrenginį, todėl norėjome išsiaiškinti, kaip tai automatiškai apeiti įspėjimas.

Sprendimų, kaip apeiti „saugų garsumo ribą“, jau yra, jei ieškote mūsų forumuose, tačiau iki šiol visi sprendimai reikalauja diegti Xposed Modulis. Tai būtinai riboja, kas gali juo naudotis, nes Xposed Framework reikalauja turėti root prieigą (tai reiškia, kad daugumoje telefonų yra atrakinta įkrovos įkroviklis), taip pat „Android“ versijos iki „Nougat“. Tačiau pasigilinęs į AOSP ir įvairius sistemos nustatymus atradau būdą, kaip apeiti didelio garso/saugaus garso ribą. visuose įrenginiuose nereikalaujant root.

Vadovaudamiesi šiuo vadovu prisiimate bet kokią riziką, susijusią su medijos klausymu dideliu garsu.


Saugaus garso įspėjimo apėjimo pamoka

Jei perskaitėte mano ankstesnį straipsnį apie įgalinant įtraukiantį režimą be root prieigos, tada galbūt pradėjote žaisti su kai kuriais telefone paslėptais nustatymais. Jei to nepadarėte, labai rekomenduoju tai padaryti, nes pastebėjau, kad beveik kiekviename įrenginyje yra daugybė gėrybių, kurios tik laukia, kol bus atrastos. Šis triukas nesiskiria, nes naudosime sistemos ypatybę, kad išvengtume saugaus garso įspėjimo.

Tiksliau, mes pakeisime sistemą. Pasaulinė nuosavybė audio_safe_volume_state tiek paleidžiant, tiek periodiškai, todėl „Android“ visada manys, kad sutikote apeiti įspėjimą. Šis turtas yra apibrėžta AOSP, kurią pakartojame toliau. Yra keletas būsenų, kurias ši nuosavybė gali turėti, nuo 0 iki 3. Praėjus 30 sekundžių po įkrovos arba kas 20 valandų nepertraukiamo muzikos atkūrimo, būsena nustatoma į „0“ arba „nesukonfigūruota“. Tada jis nustatomas į „1“ (išjungta) arba „3“ – „įjungta“, atsižvelgiant į jūsų Mobilusis šalies kodas. Jei gyvenate ES, ši ypatybė pagal numatytuosius nustatymus nustatyta į „3“, bet pakeičiama į „2“, jei ji yra „neaktyvi“, kai naudotojas rankiniu būdu apeina garsumo įspėjimą. Pakeisime šios nuosavybės vertę į „neaktyvią“. (Pakeitimas į „Neįgalus“ man niekada nepadėjo, jei jums įdomu).


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

Skaityti daugiau

Pirmiausia turėsite įdiegti Taskeris ir Automatiniai įrankiai kad galėtume automatizuoti šį triuką. Techniškai galima naudoti bet kurią kitą automatizavimo programą, išskyrus „Tasker“, bet aš susipažinau tik su „Tasker“, todėl turėsite patys atlikti pakeitimus, jei norite naudoti kitą programą. Tačiau „AutoTools“ yra labai svarbus šiam trikui, nes šis papildinys leis mums valdyti saugius įrenginio nustatymus.

Kaip paaiškinau mano straipsnyje apie įtraukiančio režimo perjungimą, turime suteikti WRITE_SECURE_SETTINGS leidimas AutoTools. Taip yra todėl, kad saugios garso garsumo būsenos valdymo komanda yra apibrėžta Nustatymai. Pasaulinis klasė, nors tiksli komandos sintaksė yra paslėpta AOSP (kaip ir įtraukiamuoju režimu). Jei jau suteikėte WRITE_SECURE_SETTINGS leidimą AutoTools po to, kai perskaitėte mano ankstesnę pamoką apie įtraukiantį režimą, galite praleisti kitą skyrių. Jei ne, turėsite jį nustatyti.


„Android“ leidimų valdymo sistemoje programos apibrėžia leidimus, kuriuos joms nori suteikti manifesto faile. Tada vartotojai gali suteikti arba atmesti leidimus diegdami (pre-Marshmallow) arba pareikalavę (Marshmallow+). Tačiau yra tam tikrų leidimų, kurių paraiškoms negalima suteikti, net jei jos to prašo manifeste, pvz., WRITE_SECURE_SETTINGS. Taip yra todėl, kad suteikus bet kuriai programai tokį galingą leidimą, programa suteiktų daug galimybių valdyti jūsų įrenginį.

Tačiau yra vienas sprendimas, kurį galime naudoti norėdami suteikti WRITE_SECURE_SETTINGS leidimą bet kuriai norimai programai. Naudojant ADB paketų tvarkyklė (pm) įrankį, galime suteikti bet kokį leidimą bet kuriai norimai programai (su sąlyga, kad programa to leidimo prašo manifesto faile).

Pirmas dalykas, kurį turėsite padaryti, yra Įdiekite ADB dvejetainį failą į savo kompiuterį ir tada tinkama jūsų įrenginio tvarkyklė. Tada Kūrėjo parinktyse įgalinkite USB derinimą (eikite į Nustatymai -> Apie telefoną ir bakstelėkite Sukūrimo numerį 7 kartus, jei dar to nepadarėte) ir prijunkite telefoną prie kompiuterio. Galiausiai, atidarę terminalą, išsiųskite šią komandą:

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

Dabar „AutoTools“ turės galimybę pakeisti bet kokius visuotinius, saugius arba sistemos nustatymus jūsų įrenginyje. Yra įvairių būdų, kaip žaisti su šiais nustatymais ir galimų nustatymų sąrašu kiekviena kategorija visiškai priklauso nuo jūsų įrenginio ir programinės įrangos versijos, tačiau ši diskusija skirta kitai laikas. Bet kuriuo atveju mes parodysime, kaip naudoti automatinius įrankius saugiai garsumo būsenai valdyti.


Saugaus garso įspėjimo paleidimo metu išjungimas

Štai profilio aprašymas tiems iš jūsų, kurie yra susipažinę su Tasker. Jei nesate susipažinę su Tasker, skaitykite nuoseklias instrukcijas.

Išjungti saugų garsą paleidžiant

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 ]

Skaityti daugiau

Atidarykite „Tasker“, kad galėtume sukurti naują profilį. Apatiniame dešiniajame kampe bakstelėkite + piktogramą, kad sukurtumėte naują profilį. Pridėti naują Renginys kontekstą ir eikite į Tasker -> Monitor Start. Mes naudojame šį įvykio kontekstą, kuris suaktyvinamas paleidus Tasker, o ne įvykio kontekstą, kuris suaktyvinamas, kai telefonas paleidžiamas, nes pirmasis yra daug patikimesnis nei antrasis.

Bet kokiu atveju paspauskite atgal mygtuką, nes dabar sukursime su šiuo profiliu susietą užduotį. Pavadinkite užduotį bet kuo, nes tai nesvarbu. Kai įeisite į užduočių kūrimo ekraną, paspauskite + piktogramą ekrano apačioje, kad sukurtumėte naują veiksmą. Norėdami atlikti pirmąjį veiksmą, eikite į Užduotis --> Palaukite ir palaukite 30 sekundžių. Tai apima taisyklę „30 sekundžių po įkrovos“, naudojamą „Android“ saugios garsumo būsenai nustatyti.

Tada sukurkite naują veiksmą ir eikite į Papildinys -> Automatiniai įrankiai -> Saugūs nustatymai. Paspauskite pieštuką, kad atidarytumėte „AutoTools“ konfigūracijos ekraną. Eiti į Pasirinktinis nustatymas. Norėdami nustatyti nustatymo tipą, įveskite Pasaulinis. Įveskite pavadinimą audio_safe_volume_state. Įvesties tipui padarykite tai tarpt. Padarykite tai dėl vertės 2. Patikrinkite, ar viską teisingai įdėjote, konfigūracija turi atitikti toliau pateiktą vidurinę ekrano kopiją. Komanda turi būti išsiųsta tiksliai kaip rašiau, kitaip tai neturės jokios įtakos.

Baigę grįžkite į pagrindinį Tasker meniu, nes turėsime sukurti kitą profilį. Tą, kurią ką tik sukūrėme, kai saugaus garsumo būsena nustatoma praėjus 30 sekundžių po įkrovos, bet kuriai Tie iš jūsų, kurie beveik niekada nepaleidžia įrenginio iš naujo, sukursime kitą profilį, kad periodiškai tai nustatytume vertė.


Periodiškai išjunkite saugų garso įspėjimą

Štai profilio aprašymas tiems iš jūsų, kurie yra susipažinę su Tasker. Jei nesate susipažinę su Tasker, skaitykite nuoseklias instrukcijas.

Periodiškai išjunkite saugų garsą

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 ]

Skaityti daugiau

Sukurkite naują profilį, šį kartą naudodami a Laikas kontekste. Deja, aš nežinau jokio metodo, kaip gauti dabartinį bendrą medijos atkūrimo laiką be jo root, todėl mes tiesiog periodiškai nustatysime saugaus garsumo būseną į neaktyvią kartą per 24 valandas (... tai nėra taip, kad jūs, vaikinai, iš tikrųjų klausotės 20 valandų muzikos per 24 valandas, tiesa?). Bet kokiu atveju, „Tasker“ sąsaja, skirta periodinei užduočiai nustatyti, yra baisi, tačiau jos esmė ta, kad norite nustatyti „Nuo“ ir „Iki“ laiką į tą patį laiką. Tokiu būdu „Tasker“ elgsis taip, lyg norėtumėte, kad užduotis įsijungtų tik vieną kartą nustatytu laiku (aš tai padariau likus 1 min. iki vidurnakčio).

Kalbant apie užduotį, tiesiog nukopijuokite tai, ką padarėte atlikdami 2 veiksmą ankstesniame profilyje. Šiuo atveju nėra jokio naujo ar kitokio veiksmo, nes mes tik keičiame šios pasaulinės sistemos ypatybės vertę kartą per 24 valandas.

Dabar, kai nustatėte abu šiuos profilius, viskas! Iš naujo paleiskite telefoną ir dabar nebeturėtumėte matyti „saugaus garso“ įspėjimo, kai prijungiate ausines.


Atsisiųskite ir importuokite į Tasker

Kaip visada, pateikiame scenarijų XML failą, kurį galite atsisiųsti ir importuoti. Tiesiog atsisiųskite failus iš toliau pateiktos nuorodos ir išsaugokite juos bet kurioje vidinėje atmintyje. Atidarykite „Tasker“ ir „Preferences“ išjunkite pradedančiųjų režimą. Tada grįžkite į pagrindinį ekraną ir ilgai paspauskite viršuje esantį skirtuką „Profilis“. Turėtumėte pamatyti iššokantįjį langą su viena iš parinkčių „Importuoti“. Bakstelėkite jį ir naršykite, kur išsaugojote .prf.xml failus, ir pasirinkite tą failą, kurį norite importuoti. Pakartokite antram profiliui.

Atsisiųskite profilį „Išjungti saugų garso įspėjimą paleidžiant“.

Atsisiųskite profilį „Periodiškai išjungti saugų garso įspėjimą“.

Tikimės, kad šis patarimas jums bus naudingas. Praneškite mums toliau pateiktuose komentaruose, jei tai jums tinka!