Урок за това как да деактивирате предупреждението за висока сила на звука или безопасно аудио, което се изисква на устройства, продавани в ЕС. Това работи на всички устройства без root.
Тези от вас, които живеят в една от страните-членки на Европейския съюз, вероятно са попадали на предупреждението, когато се опитват да увеличат звука на слушалките си, както е показано на изображението на функцията по-горе.
Съгласно разпоредбите, определени от Европейския комитет за електротехническа стандартизация (CENELEC), всички електронни устройства с възможност за възпроизвеждане на мултимедия, продадени след февруари 2013 г., трябва да имат ниво на звука по подразбиране от максимум 85 dB. Потребителите могат да изберат да отменят предупреждението, за да увеличат силата на звука до максимум 100 dB, но при това предупреждението трябва да се появи отново след 20 часа възпроизвеждане на музика.
Въпреки че няма да навлизаме в дебат относно ефикасността на този регламент за насърчаване на доброто здраве, потребителите, които често избират да заобиколят това предупреждение, често се чудят дали този процес може да бъде автоматизиран. Има много случаи, в които е доста досадно да се налага ръчно да се съгласявате да отмените ограничението на силата на звука, например когато стартирате дистанционно възпроизвеждане на музика на Bluetooth устройство, така че искахме да намерим начин за автоматично заобикаляне на това внимание.
Решения за заобикаляне на „ограничението за безопасен обем“ вече съществуват, ако търсите в нашите форуми, но досега всички решения изискваха от вас Инсталирай един Xposed Модул. Това задължително ограничава кой може да го използва, тъй като Xposed Framework изисква да имате root достъп (което означава отключен буутлоудър на повечето телефони), както и да сте на версии на Android преди Nougat. Но след като се зарових в AOSP и различни системни настройки, открих начин да заобиколя ограничението за висок обем/безопасно аудио на всички устройства, без да изисква root.
Следвайки това ръководство, вие приемате всички рискове, свързани със слушането на мултимедия при високи нива на звука.
Урок за байпас за безопасно аудио предупреждение
Ако сте чели предишната ми статия за активиране на потапящ режим без root достъп, тогава може да сте започнали да си играете с някои от настройките, които можете да намерите скрити на телефона си. Ако не сте, горещо ви препоръчвам да го направите, тъй като открих, че почти всяко устройство има куп екстри, които чакат да бъдат открити. Този трик не е по-различен, тъй като ще използваме системно свойство, за да заобиколим безопасното аудио предупреждение.
По-конкретно, ние ще модифицираме системата. Глобална собственост audio_safe_volume_state както при зареждане, така и периодично, така че Android винаги ще смята, че сте се съгласили да заобиколите предупреждението. Този имот е дефинирани в AOSP, който възпроизвеждаме по-долу. Има няколко състояния, които този имот може да приеме, вариращи от 0-3. 30 секунди след зареждане или след всеки 20 часа непрекъснато възпроизвеждане на музика, състоянието е зададено на „0“ или „не е конфигурирано“. След това се задава на '1' за 'забранено' или '3' за 'разрешено' в зависимост от вашия Мобилен код на държавата. Ако живеете в ЕС, това свойство е зададено на „3“ по подразбиране, но се променя на „2“ за „неактивно“ всеки път, когато потребителят ръчно заобиколи предупреждението за обем. Ще променим стойността на това свойство в състояние „неактивно“. (промяната му на „забранено“ никога не работи за мен, в случай че се чудите).
//
// 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
Прочетете още
Първо ще трябва да инсталирате Tasker и AutoTools така че можем да автоматизираме този трик. Технически може да се използва всяко друго приложение за автоматизация освен Tasker, но аз съм запознат само с Tasker, така че ще трябва да направите корекции сами, ако предпочитате да използвате друго приложение. AutoTools обаче е от решаващо значение за този трик, тъй като този плъгин ще ни позволи да контролираме защитените настройки на нашето устройство.
Както е обяснено в статията ми за превключване на потапящ режим, трябва да предоставим на WRITE_SECURE_SETTINGS разрешение за AutoTools. Това е така, защото командата за контролиране на състоянието на звука на безопасното аудио е дефинирана под Настройки. Глобален клас, въпреки че точният синтаксис за командата е скрит в AOSP (точно както беше за потапящия режим). Ако вече сте предоставили разрешението WRITE_SECURE_SETTINGS на AutoTools, след като сте прочели предишния ми урок за потапящ режим, тогава можете да пропуснете следващия раздел. Ако не, тогава ще трябва да го настроите.
Съгласно системата за управление на разрешения на Android, приложенията определят разрешенията, които искат да бъдат предоставени във файла на манифеста. След това потребителите могат да предоставят или отказват разрешения при инсталиране (преди Marshmallow) или при поискване (Marshmallow+). Има обаче определени разрешения, които приложенията не могат да бъдат предоставени, дори ако го поискат в манифеста, като напр WRITE_SECURE_SETTINGS. Това е така, защото предоставянето на разрешение, толкова силно, колкото това, на което и да е приложение, би дало на това приложение много контрол над вашето устройство.
Но има едно решение, което можем да използваме, за да дадем разрешение WRITE_SECURE_SETTINGS на всяко приложение, което искаме. С помощта на ADB мениджър на пакети (pm) можем да предоставим всяко разрешение на всяко приложение, което пожелаем (при условие, че приложението поиска това разрешение във файла на манифеста).
Първото нещо, което ще трябва да направите е инсталирайте двоичния файл на ADB на вашия компютър, последвано от правилния драйвер за вашето устройство. След това активирайте USB Debugging в Developer Options (отидете на Settings --> About Phone и докоснете Build number 7 пъти, ако още не сте го направили) и свържете телефона си към компютъра. И накрая, изпратете следната команда, след като отворите терминал:
adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS
Сега AutoTools ще има способността да променя всяка глобална, защитена или системна настройка на вашето устройство. Има различни начини, по които можете да си поиграете с тези настройки и списъка с налични настройки в всяка категория напълно зависи от вашето устройство и софтуерна версия, но тази дискусия е за друг време. Във всеки случай ще продължим да ви показваме как да използвате AutoTools, за да контролирате състоянието на безопасния обем.
Деактивиране на предупреждението за безопасно аудио при зареждане
Ето описанието на профила за тези от вас, които са запознати с Tasker. Ако не сте запознати с Tasker, прочетете инструкции стъпка по стъпка.
Деактивирайте безопасното аудио при зареждане
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 ]
Прочетете още
Отворете Tasker, за да можем да създадем нов профил. В долния десен ъгъл докоснете + икона за създаване на нов профил. Добавяне на нов Събитие контекст и отидете на Tasker --> Monitor Start. Използваме този контекст на събитието, който се задейства, когато Tasker стартира, а не контекста на събитието, който се активира, когато телефонът се зарежда, тъй като първият е много по-надежден от втория.
Във всеки случай натиснете бутона за връщане назад, тъй като сега ще създадем задача, свързана с този профил. Наименувайте Задачата по всякакъв начин, тъй като няма значение. След като влезете в екрана за създаване на задача, натиснете върху + икона в долната средна част на екрана, за да създадете ново действие. За първото действие отидете на Задача --> Изчакайте и го накарайте да изчака 30 секунди. Това отчита правилото „30 секунди след зареждане“, използвано в Android за задаване на състояние на безопасен обем.
След това създайте ново действие и отидете на Добавка --> AutoTools --> Secure Settings. Натиснете молива, за да отворите екрана за конфигурация за AutoTools. Отидете на Персонализирана настройка. За Тип настройка въведете Глобален. За име въведете audio_safe_volume_state. За Input Type го направете вътр. За стойността го направи 2. Проверете дали сте поставили всичко правилно, конфигурацията трябва да съответства на средната екранна снимка по-долу. Командата трябва да бъде изпратена точно както съм написал или няма да повлияе.
След като приключите, върнете се към главното меню на Tasker, тъй като ще трябва да създадем друг профил. Този, който току-що създадохме, отчита, когато състоянието на безопасен обем е зададено 30 секунди след зареждане, но за тези от вас, които почти никога не рестартират устройството си, ще направим друг профил, за да го задаваме периодично стойност.
Деактивирайте периодично предупреждението за безопасно аудио
Ето описанието на профила за тези от вас, които са запознати с Tasker. Ако не сте запознати с Tasker, прочетете инструкции стъпка по стъпка.
Деактивирайте периодично безопасното аудио
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 ]
Прочетете още
Създайте нов профил, този път с a време контекст. За съжаление не знам за никакъв метод за получаване на текущото кумулативно време на възпроизвеждане на мултимедия без root, така че вместо това просто периодично ще настройваме състоянието на безопасния обем на неактивен веднъж на всеки 24 часа (... не е като вие наистина да слушате 20 часа музика в рамките на 24 часа, нали?). Както и да е, интерфейсът на Tasker за задаване на периодична задача е някак ужасен, но същността му е, че искате да зададете времето „От“ и „До“ на едно и също време. По този начин Tasker ще го третира така, сякаш искате Задачата да се задейства само веднъж в зададено време (направих го 1 минута преди полунощ).
Що се отнася до задачата, просто копирайте това, което сте направили за действие #2 в предишния профил. В този случай няма ново или различно действие, тъй като всичко, което правим, е да променяме стойността на това свойство на глобалната система веднъж на всеки 24 часа.
Сега, след като сте настроили и двата профила, сте готови! Рестартирайте телефона си и вече не трябва да виждате предупреждението за „безопасна сила на звука“, когато включите слушалките си.
Изтеглете и импортирайте в Tasker
Както винаги, предоставяме XML файла на скриптовете, който можете да изтеглите и импортирате. Просто изтеглете файловете от връзката по-долу и ги запазете навсякъде във вашата вътрешна памет. Отворете Tasker и деактивирайте режима за начинаещи в Предпочитания. След това се върнете към главния екран и натиснете продължително върху раздела „Профил“ в горната част. Трябва да видите изскачащ прозорец с една от опциите „Импортиране“. Докоснете това и прегледайте къде сте запазили .prf.xml файловете и изберете този файл за импортиране. Повторете за втория профил.
Изтеглете профила „Деактивиране на предупреждението за безопасно аудио при стартиране“.
Изтеглете профила „Деактивирайте периодично предупреждението за безопасно аудио“.
Надяваме се, че ще намерите този съвет за полезен. Уведомете ни в коментарите по-долу дали това работи за вас!