Hogyan lehet automatikusan letiltani a nagy hangerő-figyelmeztetést root nélkül

Útmutató a nagy hangerőre vagy a biztonságos hangra vonatkozó figyelmeztetés letiltásához, amely az EU-ban értékesített eszközökön kötelező. Ez minden root nélküli eszközön működik.

Azok, akik az Európai Unió tagállamaiban élnek, valószínűleg találkoztak a figyelmeztetéssel, amikor megpróbálták növelni a fejhallgató hangerejét, ahogy az a fenti képen látható.

Az Európai Elektrotechnikai Szabványosítási Bizottság (CENELEC) előírásai szerint minden elektronikus A 2013 februárja után értékesített médialejátszásra alkalmas eszközök alapértelmezett kimeneti hangerejének maximum 85-nek kell lennie. dB. A felhasználók dönthetnek úgy, hogy felülbírálják a figyelmeztetést, hogy a hangerőt legfeljebb 100 dB-re növeljék, de ennek során a figyelmeztetésnek újra meg kell jelennie 20 óra zenelejátszás után.

Miközben nem fogunk vitába bonyolódni a rendeletnek a jó előmozdításában való hatékonyságáról egészség, a felhasználók, akik gyakran úgy döntenek, hogy megkerülik ezt a figyelmeztetést, gyakran elgondolkodnak azon, hogy ez a folyamat lehetséges-e automatizált. Sok olyan eset van, amikor meglehetősen bosszantó, ha kézzel kell beleegyezni a hangerőkorlát felülbírálásához, például amikor elindítja zenelejátszás távolról Bluetooth-eszközön, ezért meg akartuk találni a módját ennek automatikus megkerülésére. Figyelem.

Már léteznek megoldások a "biztonságos hangerő-korlát" megkerülésére, ha keres a fórumainkon, de eddig minden megoldás megkövetelte, hogy telepítés egy Xposed Modul. Ez szükségszerűen korlátozza, hogy ki használhatja, mivel az Xposed Framework megköveteli, hogy root hozzáféréssel rendelkezzen (ami a legtöbb telefonon feloldatlan rendszerbetöltőt jelent), valamint az Android Nougat előtti verzióin. De miután beleástam magam az AOSP-be és a különféle rendszerbeállításokba, felfedeztem egy módot a nagy hangerő/biztonságos hangkorlát megkerülésére. minden eszközön root igény nélkül.

Az útmutató követésével vállalja a média nagy hangerőn történő hallgatásával járó kockázatokat.


Biztonságos hangos figyelmeztetés megkerülésének oktatóanyaga

Ha elolvastad az előző cikkem az immerzív mód engedélyezése root hozzáférés nélkül, akkor lehet, hogy elkezdett játszani néhány olyan beállítással, amelyet a telefonján rejtve találhat. Ha még nem, akkor nagyon ajánlom, hogy tedd meg, mivel azt tapasztaltam, hogy szinte minden eszközben van egy csomó finomság, amely csak arra vár, hogy felfedezzék. Ez a trükk sem különbözik attól, hogy egy rendszertulajdonságot fogunk használni a biztonságos hangjelzés megkerülésére.

Konkrétan a rendszert fogjuk módosítani. Globális tulajdon audio_safe_volume_state rendszerindításkor és időszakonként is, így az Android mindig azt fogja gondolni, hogy beleegyezett a figyelmeztetés megkerüléséhez. Ez az ingatlan az AOSP-ben meghatározott, amelyet az alábbiakban reprodukálunk. Ennek a tulajdonságnak számos állapota van, 0 és 3 között. 30 másodperccel a rendszerindítás után vagy minden 20 óránkénti folyamatos zenelejátszás után az állapot „0” vagy „nincs konfigurálva” lesz. Ezután '1'-re van állítva a 'letiltva' vagy '3'-ra az 'engedélyezve', attól függően, hogy Mobil országkód. Ha az EU-ban él, ez a tulajdonság alapértelmezés szerint „3”-ra van állítva, de „2” értékre változik az „inaktív” értéknél, amikor a felhasználó manuálisan megkerüli a hangerőre vonatkozó figyelmeztetést. Ennek a tulajdonságnak az értékét „inaktív” állapotra módosítjuk (Nekem soha nem működött a "fogyatékosra" váltás, ha kíváncsiak vagytok).


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

Olvass tovább

Először telepítenie kell Tasker és AutoTools hogy automatizálhassuk ezt a trükköt. Technikailag a Taskeren kívül bármely más automatizálási alkalmazás használható, de én csak a Taskert ismerem, így Önnek kell elvégeznie a beállításokat, ha másik alkalmazást szeretne használni. Az AutoTools azonban kritikus fontosságú ehhez a trükkhöz, mivel ez a beépülő modul lehetővé teszi számunkra, hogy vezéreljük eszközünk biztonságos beállításait.

Amint azt az immerzív mód átkapcsolásáról szóló cikkemben kifejtettem, engedélyeznünk kell a WRITE_SECURE_SETTINGS engedélyt az AutoToolshoz. Ennek az az oka, hogy a biztonságos hangerő-állapot vezérlésére szolgáló parancs a Beállítások. Globális osztályban, bár a parancs pontos szintaxisa el van rejtve az AOSP-ben (akárcsak az immerzív módban). Ha már megadta a WRITE_SECURE_SETTINGS engedélyt az AutoTools számára, miután elolvasta a Bemerítő módról szóló előző oktatóanyagomat, akkor kihagyhatja a következő részt. Ha nem, akkor be kell állítania.


Az Android engedélykezelő rendszerében az alkalmazások a Manifest fájlban határozzák meg, hogy milyen engedélyeket szeretnének megadni. A felhasználók ezután megadhatnak vagy megtagadhatnak engedélyeket telepítéskor (Marshmallow előtt) vagy igény szerint (Marshmallow+). Vannak azonban bizonyos engedélyek, amelyeket az alkalmazások akkor sem adhatnak meg, ha azt a Kiáltványban kérik, mint pl WRITE_SECURE_SETTINGS. Ennek az az oka, hogy ha bármely alkalmazásnak ilyen erős engedélyt ad, az adott alkalmazásnak rengeteg irányítást biztosítana az eszköz felett.

De van egy megoldás, amellyel megadhatjuk a WRITE_SECURE_SETTINGS engedélyt bármely alkalmazásnak, amelyet akarunk. Az ADB használatával csomagkezelő (pm) eszközzel tetszőleges engedélyt adhatunk bármely kívánt alkalmazásnak (feltéve, hogy az alkalmazás kéri ezt az engedélyt a Manifest fájlban).

Az első dolog, amit meg kell tennie telepítse az ADB bináris fájlt számítógépére, majd a megfelelő illesztőprogram az eszközhöz. Ezután engedélyezze az USB hibakeresést a Fejlesztői beállításokban (menjen a Beállítások --> A telefonról menüpontra, és érintse meg hétszer a Build number elemet, ha még nem tette meg), és csatlakoztassa telefonját a számítógépéhez. Végül küldje el a következő parancsot, miután megnyitott egy terminált:

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

Az AutoTools mostantól képes bármilyen globális, biztonságos vagy rendszerbeállítást módosítani az eszközön. Különféle módon játszhat ezekkel a beállításokkal és az elérhető beállítások listájával minden kategória teljesen az eszközétől és a szoftver felépítésétől függ, de ez a megbeszélés egy másikra vonatkozik idő. Mindenesetre tovább fogunk mutatni, hogyan használhatja az AutoTools-t a biztonságos hangerő állapotának szabályozására.


Biztonságos hangjelzés letiltása rendszerindításkor

Itt található a profil leírása azok számára, akik ismerik a Taskert. Ha nem ismeri a Taskert, olvassa el a lépésenkénti utasításokat.

Kapcsolja ki a Biztonságos hangot rendszerindításkor

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 ]

Olvass tovább

Nyissa meg a Taskert, hogy új profilt tudjunk létrehozni. A jobb alsó sarokban érintse meg a gombot + ikonra új profil létrehozásához. Adjon hozzá egy újat Esemény szövegkörnyezetben, és lépjen ide Tasker --> Monitor Start. Ezt az eseménykörnyezetet használjuk, amely a Tasker indulásakor aktiválódik, nem pedig az eseménykörnyezetet, amely akkor aktiválódik, amikor a telefon elindul, mivel az előbbi sokkal megbízhatóbb, mint az utóbbi.

Mindenesetre nyomja meg a vissza gombot, mert most létrehozunk egy feladatot ehhez a profilhoz. Nevezd el a feladatot bárminek, mert nem számít. Miután belépett a Feladat létrehozása képernyőre, nyomja meg a gombot + ikont a képernyő alsó közepén egy új művelet létrehozásához. Az első művelethez lépjen a következőre: Feladat --> Várj és várja meg 30 másodperc. Ez felel meg az Android rendszerben a biztonságos hangerő beállításához használt „30 másodperces indítás után” szabálynak.

Ezután hozzon létre egy új műveletet, és lépjen a következőre Plugin --> AutoTools --> Secure Settings. Nyomja meg a ceruzát az AutoTools konfigurációs képernyőjének megnyitásához. Menj Egyedi beállítás. A beállítás típusához írja be Globális. A névhez írja be audio_safe_volume_state. A Bemeneti típushoz készítse el int. Az Értékért csináld 2. Ellenőrizze, hogy mindent helyesen tett-e be, a konfigurációnak meg kell egyeznie az alábbi középső képernyőképen. A parancsot el kell küldeni pontosan ahogy írtam, különben nem lesz hatása.

Ha végzett, lépjen vissza a Tasker főmenüjébe, mert létre kell hoznunk egy másik profilt. Az imént hoztunk létre fiókot, amikor a biztonságos kötet állapota 30 másodperccel a rendszerindítás után van beállítva, de a számára Azoknak, akik szinte soha nem indítják újra az eszközt, egy másik profilt készítünk, hogy ezt rendszeresen beállíthassuk érték.


A Biztonságos Hangfigyelmeztetés rendszeres kikapcsolása

Itt található a profil leírása azok számára, akik ismerik a Taskert. Ha nem ismeri a Taskert, olvassa el a lépésenkénti utasításokat.

Rendszeresen kapcsolja ki a Biztonságos hangot

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 ]

Olvass tovább

Hozzon létre egy új profilt, ezúttal a Idő kontextus. Sajnos nem ismerek semmilyen módszert a médialejátszás aktuális összesített idejének lekérésére anélkül root, ezért ehelyett csak időszakonként, 24 óránként inaktívra állítjuk a biztonságos hangerőt (... nem mintha 20 órányi zenét hallgatnának 24 órán belül, igaz?). Mindenesetre a Tasker kezelőfelülete az időszakos feladatok beállításához borzasztó, de a lényege az, hogy a "Feladó" és a "Cél" időpontot ugyanarra az időpontra szeretné beállítani. Így a Tasker úgy kezeli, mintha azt szeretné, ha a Task csak egyszer indulna el egy beállított időpontban (én éjfél előtt 1 perccel tettem meg).

Ami a feladatot illeti, csak másolja be, amit a 2. művelethez tett az előző profilban. Ebben az esetben nincs új vagy eltérő művelet, mivel csak annyit teszünk, hogy 24 óránként egyszer megváltoztatjuk ennek a globális rendszertulajdonságnak az értékét.

Most, hogy mindkét profilt beállította, kész! Indítsa újra a telefont és most már nem kell látnia a "biztonságos hangerő" figyelmeztetést, amikor csatlakoztatja a fejhallgatót.


Töltse le és importálja a Taskerbe

Mint mindig, most is biztosítjuk a szkriptek XML-fájlját, amelyet letölthet és importálhat. Egyszerűen töltse le a fájlokat az alábbi linkről, és mentse el bárhová a belső tárhelyén. Nyissa meg a Taskert, és tiltsa le a Kezdő módot a Beállításokban. Ezután lépjen vissza a főképernyőre, és tartsa lenyomva fent a „Profil” lapot. Meg kell jelennie egy felugró ablaknak, amelynek egyik opciója az „Importálás”. Koppintson rá, és keresse meg a .prf.xml fájlok mentési helyét, és válassza ki az importálni kívánt fájlt. Ismételje meg a második profilnál.

Töltse le a „Biztonságos hangjelzés letiltása rendszerindításkor” profilt

Töltse le a „Biztonságos hangos figyelmeztetés időszakos letiltása” profilt

Reméljük hasznosnak találja ezt a tippet. Az alábbi megjegyzésekben tudassa velünk, ha ez működik az Ön számára!