Kuidas automaatselt keelata suure helitugevuse hoiatus ilma juureta

Õpetus selle kohta, kuidas keelata suure helitugevuse või ohutu heli hoiatus, mis on nõutav EL-is müüdavates seadmetes. See töötab kõigis seadmetes, millel puudub juur.

Need, kes elavad mõnes Euroopa Liidu liikmesriigis, on ilmselt kohanud hoiatust, kui üritate tõsta kõrvaklappide helitugevust, nagu on näidatud ülaloleval funktsioonipildil.

Vastavalt Euroopa Elektrotehnilise Standardikomitee (CENELEC) kehtestatud määrustele on kõik elektroonilised pärast 2013. aasta veebruari müüdud meediumi taasesitusvõimega seadmete vaikeväljundi helitugevus peab olema maksimaalselt 85 dB. Kasutajad saavad valida hoiatuse tühistamise, et suurendada helitugevust maksimaalselt 100 dB-ni, kuid seda tehes peab hoiatus uuesti ilmuma pärast 20-tunnist muusika taasesitamist.

Kuigi me ei hakka arutlema selle määruse tõhususe üle hea edendamisel tervist, kasutajad, kes otsustavad sageli sellest hoiatusest mööda minna, mõtlevad sageli, kas see protsess saab olla automatiseeritud. On palju juhtumeid, kus on üsna tüütu käsitsi nõustuda helitugevuse piirangu alistamisega, näiteks käivitamisel muusikat kaugesitada Bluetooth-seadmes, nii et tahtsime välja mõelda viisi, kuidas sellest automaatselt mööda minna hoiatus.

Lahendused "ohutu helitugevuse piirangust" mööda hiilimiseks on juba olemas, kui otsite meie foorumitest, kuid siiani on kõik lahendused nõudnud installida Xposed Moodul. See piirab tingimata seda, kes seda kasutada saavad, kuna Xposed Framework nõuab juurjuurdepääsu (mis tähendab enamikus telefonides lukustamata alglaadurit) ja Androidi Nougati-eelsetes versioonides. Kuid pärast AOSP-sse ja erinevatesse süsteemiseadetesse süvenemist olen avastanud viisi, kuidas suure helitugevuse / ohutu heli piirangust mööda minna kõigis seadmetes, ilma juurjuurdepääsu nõudmata.

Seda juhendit järgides nõustute kõigi riskidega, mis on seotud meedia suure helitugevusega kuulamisega.


Ohutu helihoiatuse möödaviimise õpetus

Kui olete lugenud minu eelmist artiklit Immersive Mode'i lubamine ilma juurjuurdepääsuta, siis olete võib-olla hakanud mängima mõne seadega, mille leiate oma telefonis peidetuna. Kui te seda veel teinud ei ole, soovitan soojalt seda teha, sest olen avastanud, et peaaegu igas seadmes on palju näpunäiteid, mis ootavad avastamist. See trikk ei erine, kuna me kasutame süsteemi atribuuti, et ohutust helihoiatusest mööda minna.

Täpsemalt muudame süsteemi. Globaalne vara audio_safe_volume_state nii alglaadimisel kui ka perioodiliselt, nii et Android arvab alati, et olete nõustunud hoiatusest mööda minema. See vara on määratletud AOSP-s, mida me allpool esitame. Sellel atribuudil võib olla mitu olekut, vahemikus 0–3. 30 sekundit pärast käivitamist või pärast iga 20-tunnist pidevat muusika taasesitust seatakse olekuks „0” või „pole konfigureeritud”. Seejärel seatakse see väärtusele '1' kui "keelatud" või "3" kui "lubatud" olenevalt teie Mobiilne riigikood. Kui elate EL-is, on selle atribuudi väärtus vaikimisi seatud väärtusele 3, kuid kui kasutaja jätab helitugevuse hoiatuse käsitsi mööda, muutub see väärtuseks 2, kui kasutaja ei ole aktiivne. Muudame selle atribuudi väärtuse olekusse "mitteaktiivne". (Selle muutmine olekuks "puuetega" ei töötanud minu jaoks kunagi, juhuks kui teil tekib küsimus).


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

Loe rohkem

Esmalt peate installima Tasker ja AutoTools et saaksime selle triki automatiseerida. Tehniliselt saab kasutada mis tahes muid automatiseerimisrakendusi peale Taskeri, kuid ma olen tuttav ainult Taskeriga, nii et kui eelistate mõnda muud rakendust, peate ise muudatusi tegema. AutoTools on aga selle triki jaoks kriitilise tähtsusega, kuna see pistikprogramm võimaldab meil juhtida meie seadme turvasätteid.

Nagu selgitatud minu artiklis ümbritseva režiimi ümberlülitamise kohta, peame lubama WRITE_SECURE_SETTINGS luba AutoToolsile. Seda seetõttu, et turvalise helitugevuse oleku juhtimise käsk on määratletud all Seaded. Globaalne klassis, kuigi käsu täpne süntaks on AOSP-s peidetud (nagu see oli ümbritseva režiimi puhul). Kui olete pärast minu eelmise keelekümblusrežiimi õpetuse lugemist juba andnud rakendusele AutoTools loa WRITE_SECURE_SETTINGS, võite järgmise jaotise vahele jätta. Kui ei, siis peate selle seadistama.


Androidi lubade haldussüsteemis määravad rakendused Manifest-failis load, mida nad soovivad anda. Seejärel saavad kasutajad installimisel (Marshmallow-eelne) või nõudmisel (Marshmallow+) load anda või keelata. Siiski on teatud õigusi, mida rakendustele ei saa anda isegi siis, kui nad seda manifestis taotlevad, näiteks WRITE_SECURE_SETTINGS. Selle põhjuseks on asjaolu, et mis tahes rakendusele nii võimsa loa andmine annaks sellele rakendusele teie seadme üle palju kontrolli.

Kuid on üks lahendus, mida saame kasutada WRITE_SECURE_SETTINGS loa andmiseks mis tahes soovitud rakendusele. Kasutades ADB-sid paketihaldur (pm) tööriist, saame anda mis tahes loa mis tahes soovitud rakendusele (eeldusel, et rakendus taotleb seda luba manifestifailis).

Esimene asi, mida peate tegema, on installige ADB binaarfail arvutisse ja seejärel teie seadme jaoks õige draiver. Seejärel lubage arendaja suvandites USB silumine (avage Seaded --> Teave telefoni kohta ja puudutage 7 korda Järjenumbrit, kui te pole seda veel teinud) ja ühendage telefon arvutiga. Lõpuks saatke pärast terminali avamist järgmine käsk:

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

Nüüd saab AutoTools muuta teie seadme mis tahes globaalset, turvalist või süsteemiseadet. Nende seadete ja saadaolevate seadete loendiga saate mängida mitmel viisil iga kategooria sõltub täielikult teie seadmest ja tarkvara konstruktsioonist, kuid see arutelu on teise jaoks aega. Igal juhul näitame teile, kuidas kasutada AutoToolsi ohutu helitugevuse oleku juhtimiseks.


Turvalise helihoiatuse keelamine alglaadimisel

Siin on profiili kirjeldus neile, kes on Taskeriga tuttavad. Kui te pole Taskeriga tuttav, lugege samm-sammult juhiseid.

Keela 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 ]

Loe rohkem

Avage Tasker, et saaksime luua uue profiili. Puudutage paremas alanurgas nuppu + ikooni uue profiili loomiseks. Lisa uus Sündmus konteksti ja minge Tasker --> Monitor Start. Kasutame pigem seda sündmuse konteksti, mis käivitub Taskeri käivitumisel, mitte sündmuse konteksti, mis aktiveerub telefoni käivitumisel, kuna esimene on palju usaldusväärsem kui teine.

Igal juhul vajutage tagasi nuppu, kuna nüüd loome selle profiiliga seotud ülesande. Nimetage ülesandele ükskõik milline, kuna sellel pole tähtsust. Kui olete ülesande loomise ekraanile sisenenud, vajutage nuppu + ikooni ekraani allosas, et luua uus tegevus. Esimese toimingu jaoks minge aadressile Ülesanne --> Oota ja las see oodata 30 sekundit. See võtab arvesse reeglit „30 sekundit pärast alglaadimist”, mida Androidis kasutatakse turvalise helitugevuse oleku määramiseks.

Järgmisena looge uus toiming ja minge lehele Plugin --> AutoTools --> Secure Settings. Automaatsete tööriistade konfiguratsiooniekraani avamiseks vajutage pliiatsi. Minema Kohandatud säte. Sisestage sätte tüübi jaoks Globaalne. Nime jaoks sisestage audio_safe_volume_state. Sisendtüübi jaoks tehke see int. Väärtuse pärast tehke seda 2. Kontrollige, kas olete kõik õigesti paigutanud, konfiguratsioon peaks vastama allolevale keskmisele ekraanipildile. Käsk tuleb saata täpselt nagu ma kirjutasin, muidu see ei mõjuta.

Kui olete lõpetanud, minge tagasi Taskeri peamenüüsse, kuna peame looma uue profiili. See, mille me äsja lõime, kontod, kui turvalise helitugevuse olek on seatud 30 sekundit pärast alglaadimist, kuid selle jaoks need teist, kes peaaegu kunagi oma seadet ei taaskäivita, teeme selle perioodiliseks seadistamiseks uue profiili väärtus.


Keela ohutu helihoiatus perioodiliselt

Siin on profiili kirjeldus neile, kes on Taskeriga tuttavad. Kui te pole Taskeriga tuttav, lugege samm-sammult juhiseid.

Keela ohutu heli perioodiliselt

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 ]

Loe rohkem

Looge uus profiil, seekord a Aeg Sisu. Kahjuks ei ole ma teadlik ühestki meetodist, kuidas saada praegune kumulatiivne meediumi taasesituse aeg ilma juur, seega seame selle asemel perioodiliselt iga 24 tunni järel turvalise helitugevuse oleku inaktiivseks (... see pole nii, et te tegelikult kuulate 24 tunni jooksul 20 tundi muusikat, eks?). Igatahes on Taskeri liides perioodilise ülesande seadistamiseks omamoodi kohutav, kuid selle põhiolemus on see, et soovite seada "Alates" ja "Kuni" aja samale ajale. Nii käsitleb Tasker seda nii, nagu soovite, et ülesanne käivituks ainult üks kord määratud ajal (tegin selle 1 minut enne südaööd).

Mis puutub ülesandesse, siis kopeerige lihtsalt eelmises profiilis toimingu nr 2 jaoks tehtud toimingud. Sel juhul pole uut ega teistsugust toimingut, kuna muudame vaid selle globaalse süsteemi atribuudi väärtust iga 24 tunni järel.

Nüüd, kui olete mõlemad profiilid seadistanud, oletegi valmis! Taaskäivitage telefon ja nüüd ei tohiks te enam kõrvaklappide ühendamisel "ohutu helitugevuse" hoiatust näha.


Laadige alla ja importige Taskerisse

Nagu alati, pakume skriptide XML-faili, mille saate alla laadida ja importida. Lihtsalt laadige failid allolevalt lingilt alla ja salvestage need suvalisse kohta oma sisemällu. Avage Tasker ja keelake eelistustes algaja režiim. Seejärel minge tagasi põhiekraanile ja vajutage pikalt ülaosas olevat vahekaarti "Profiil". Peaksite nägema hüpikakent, mille üks valikutest on "Impordi". Puudutage seda ja sirvige kohta, kuhu .prf.xml-failid salvestasite, ja valige importimiseks see fail. Korrake sama teise profiili jaoks.

Laadige alla profiil „Keela käivitamisel ohutu helihoiatus”.

Laadige alla profiil „Keela ohutu helihoiatus perioodiliselt”.

Loodame, et see näpunäide on teile kasulik. Andke meile allolevates kommentaarides teada, kas see töötab teie jaoks!