Jak automaticky zakázat upozornění na vysokou hlasitost bez root

Návod, jak deaktivovat varování High Volume nebo Safe Audio, které je vyžadováno na zařízeních prodávaných v EU. Toto funguje na všech zařízeních bez root.

Ti z vás, kteří žijí v některém z členských států Evropské unie, pravděpodobně narazili na varování, když se snažili zvýšit hlasitost sluchátek, jak je znázorněno na obrázku výše.

Podle předpisů stanovených Evropským výborem pro elektrotechnickou normalizaci (CENELEC), vše elektronické zařízení schopná přehrávat média prodaná po únoru 2013 musí mít výchozí výstupní hlasitost maximálně 85 dB. Uživatelé se mohou rozhodnout přepsat varování a zvýšit hlasitost na maximálně 100 dB, ale přitom se varování musí znovu objevit po 20 hodinách přehrávání hudby.

I když se nebudeme pouštět do debaty o účinnosti tohoto nařízení při prosazování dobra uživatelé, kteří se často rozhodnou toto varování obejít, se často ptají, zda je tento proces možný Automatizovaný. Existuje mnoho případů, kdy je docela nepříjemné muset ručně souhlasit s přepsáním limitu hlasitosti, například při spuštění přehrávání hudby na dálku na zařízení Bluetooth, takže jsme chtěli přijít na způsob, jak toto automaticky obejít Varování.

Řešení, jak obejít „limit bezpečného objemu“, již existují, pokud prohledáváte naše fóra, ale všechna řešení dosud vyžadovala, abyste Nainstalujte Xposed Modul. To nutně omezuje, kdo jej může používat, protože Xposed Framework vyžaduje, abyste měli přístup root (což znamená odemčený bootloader na většině telefonů) a také na verzích Androidu před Nougat. Ale po prozkoumání AOSP a různých nastavení systému jsem objevil způsob, jak obejít limit vysoké hlasitosti/bezpečného zvuku na všech zařízeních bez nutnosti root.

Dodržováním tohoto návodu přijímáte veškerá rizika spojená s poslechem médií při vysoké hlasitosti.


Výukový program pro bezpečné přemostění zvukového varování

Pokud jste četli můj předchozí článek o povolení režimu Immersive bez přístupu root, pak jste si možná začali hrát s některými nastaveními, která můžete najít v telefonu skrytá. Pokud ne, vřele vám to doporučuji, protože jsem zjistil, že téměř každé zařízení má spoustu vychytávek, které čekají na objevení. Tento trik se nijak neliší, protože k obejití bezpečného zvukového varování použijeme systémovou vlastnost.

Konkrétně budeme upravovat Systém. Globální majetek audio_safe_volume_state jak při spouštění, tak pravidelně, takže Android si vždy bude myslet, že jste souhlasili s obcházením varování. Tato vlastnost je definované v AOSP, kterou reprodukujeme níže. Tato vlastnost může nabývat několika stavů, v rozsahu od 0 do 3. 30 sekund po spuštění nebo po každých 20 hodinách nepřetržitého přehrávání hudby je stav nastaven na „0“ nebo „nenakonfigurováno“. Poté se nastaví na „1“ pro „zakázáno“ nebo „3“ pro „povoleno“ v závislosti na vašem Mobilní kód země. Pokud žijete v EU, je tato vlastnost ve výchozím nastavení nastavena na '3', ale změní se na '2' pro 'neaktivní' vždy, když uživatel ručně obchází varování o hlasitosti. Hodnotu této vlastnosti změníme na stav „neaktivní“. (změna na 'disabled' mi nikdy nefungovala, pokud by vás to zajímalo).


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

Přečtěte si více

Nejprve budete muset nainstalovat Tasker a AutoTools takže můžeme tento trik automatizovat. Technicky lze použít jakoukoli jinou automatizační aplikaci kromě Taskeru, ale znám pouze Tasker, takže pokud dáváte přednost použití jiné aplikace, budete muset provést úpravy sami. AutoTools je však pro tento trik kritický, protože tento plug-in nám umožní ovládat zabezpečená nastavení na našem zařízení.

Jak je vysvětleno v mém článku o přepínání imerzivního režimu, musíme povolit WRITE_SECURE_SETTINGS oprávnění k AutoTools. Důvodem je, že příkaz pro ovládání stavu bezpečné hlasitosti zvuku je definován pod Nastavení. Globální class, i když přesná syntaxe příkazu je skryta v AOSP (stejně jako v případě Immersive Mode). Pokud jste již udělili oprávnění WRITE_SECURE_SETTINGS AutoTools poté, co jste si přečetli můj předchozí výukový program o imerzivním režimu, můžete další část přeskočit. Pokud ne, budete si to muset nastavit.


V systému správy oprávnění systému Android aplikace definují oprávnění, která chtějí udělit v souboru Manifest. Uživatelé pak mohou udělit nebo odepřít oprávnění k instalaci (před Marshmallow) nebo na vyžádání (Marshmallow+). Existují však určitá oprávnění, která nelze aplikacím udělit, i když o to v Manifestu požádají, jako např WRITE_SECURE_SETTINGS. Je to proto, že udělení oprávnění jakékoli aplikaci tak silného jako toto by této aplikaci poskytlo spoustu kontroly nad vaším zařízením.

Existuje však jedno řešení, které můžeme použít k udělení oprávnění WRITE_SECURE_SETTINGS jakékoli aplikaci, kterou chceme. Pomocí ADB správce balíčků (pm) můžeme udělit libovolné oprávnění libovolné aplikaci, kterou chceme (za předpokladu, že aplikace toto oprávnění požaduje v souboru Manifest).

První věc, kterou budete muset udělat, je nainstalujte binární soubor ADB do vašeho počítače a následně správný ovladač pro vaše zařízení. Poté povolte ladění USB v možnostech vývojáře (přejděte do Nastavení --> O telefonu a 7krát klepněte na Číslo sestavení, pokud jste tak ještě neučinili) a připojte telefon k počítači. Nakonec odešlete následující příkaz, jakmile otevřete terminál:

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

Nyní budou mít AutoTools možnost změnit jakékoli globální, zabezpečené nebo systémové nastavení na vašem zařízení. S těmito nastaveními a seznamem dostupných nastavení si můžete pohrát různými způsoby každá kategorie zcela závisí na vašem zařízení a sestavení softwaru, ale tato diskuse je pro jinou čas. V každém případě vám ukážeme, jak používat AutoTools k ovládání stavu bezpečné hlasitosti.


Vypnutí bezpečného zvukového varování při spouštění

Zde je popis profilu pro ty z vás, kteří znají Tasker. Pokud nejste obeznámeni s Taskerem, přečtěte si podrobné pokyny.

Zakázat bezpečný zvuk při spouštění

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 ]

Přečtěte si více

Otevřete Tasker, abychom mohli vytvořit nový profil. V pravém dolním rohu klepněte na + ikonu pro vytvoření nového profilu. Přidat nový událost kontextu a přejděte na Tasker --> Monitor Start. Používáme tento kontext události, který se spouští při spuštění Taskeru, spíše než kontext události, který se aktivuje při spuštění telefonu, protože první je mnohem spolehlivější než druhý.

V každém případě stiskněte tlačítko zpět, protože nyní vytvoříme úkol spojený s tímto profilem. Pojmenujte úkol jakkoli, protože na tom nezáleží. Jakmile vstoupíte na obrazovku vytvoření úlohy, stiskněte na + ikonou uprostřed spodní části obrazovky vytvořte novou akci. Pro první akci přejděte na Úkol --> Počkejte a ať počká 30 sekund. To odpovídá pravidlu „30 sekund po spuštění“ používaném v systému Android k nastavení stavu bezpečného svazku.

Dále vytvořte novou akci a přejděte na Plugin --> AutoTools --> Zabezpečená nastavení. Stisknutím tužky otevřete konfigurační obrazovku pro AutoTools. Jít do Vlastní nastavení. Pro Typ nastavení zadejte Globální. Do pole Jméno zadejte audio_safe_volume_state. Pro Typ vstupu to udělejte int. Pro hodnotu to udělat 2. Zkontrolujte, zda jste vše zadali správně, konfigurace by měla odpovídat prostřednímu snímku obrazovky níže. Příkaz musí být odeslán přesně jak jsem psal, jinak to nebude mít žádný vliv.

Až budete hotovi, vraťte se do hlavní nabídky Taskeru, protože budeme muset vytvořit další profil. Ten, který jsme právě vytvořili, počítá, když je stav bezpečného svazku nastaven 30 sekund po spuštění, ale pro ti z vás, kteří téměř nikdy nerestartují své zařízení, vytvoříme další profil, který bude toto nastavení pravidelně nastavovat hodnota.


Pravidelně deaktivujte bezpečné zvukové varování

Zde je popis profilu pro ty z vás, kteří znají Tasker. Pokud nejste obeznámeni s Taskerem, přečtěte si podrobné pokyny.

Pravidelně deaktivujte Safe Audio

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 ]

Přečtěte si více

Vytvořte nový profil, tentokrát s a Čas kontext. Bohužel si nejsem vědom žádné metody, jak získat aktuální kumulativní čas přehrávání médií bez root, takže místo toho jen pravidelně nastavujeme stav bezpečného svazku na neaktivní jednou za 24 hodin (... není to tak, že byste ve skutečnosti poslouchali 20 hodin hudby během 24 hodin, že?). Každopádně rozhraní Taskeru pro nastavení periodické úlohy je trochu hrozné, ale podstatou toho je, že chcete nastavit čas „Od“ a „Do“ na stejný čas. Tímto způsobem bude Tasker zacházet, jako byste chtěli, aby se úloha spustila pouze jednou v nastavený čas (udělal jsem to 1 minutu před půlnocí).

Pokud jde o Úkol, zkopírujte, co jste udělali pro akci #2 v předchozím profilu. V tomto případě nejde o žádnou novou nebo jinou akci, protože vše, co děláme, je změna hodnoty této globální systémové vlastnosti každých 24 hodin.

Nyní, když jste nastavili oba tyto profily, jste hotovi! Restartujte telefon a nyní byste již neměli vidět upozornění na „bezpečnou hlasitost“, když připojíte sluchátka.


Stáhnout a importovat do Taskeru

Jako vždy poskytujeme soubor XML skriptů, který si můžete stáhnout a importovat. Jednoduše si stáhněte soubory z níže uvedeného odkazu a uložte je kamkoli na své interní úložiště. Otevřete Tasker a deaktivujte režim pro začátečníky v Předvolbách. Poté se vraťte na hlavní obrazovku a dlouze stiskněte nahoře záložku „Profil“. Měli byste vidět vyskakovací okno s jednou z možností „Importovat“. Klepněte na to a vyhledejte místo, kam jste uložili soubory .prf.xml, a vyberte soubor k importu. Opakujte pro druhý profil.

Stáhněte si profil „Zakázat bezpečné zvukové upozornění při spouštění“.

Stáhněte si profil „Pravidelně zakázat bezpečné zvukové varování“.

Doufáme, že vám tento tip bude užitečný. Dejte nám vědět v komentářích níže, zda to funguje pro vás!