Как автоматически отключить предупреждение о высокой громкости без рута

Учебное пособие о том, как отключить предупреждение о высокой громкости или безопасном звуке, которое требуется на устройствах, продаваемых в ЕС. Это работает на всех устройствах без рута.

Те из вас, кто живет в одной из стран-членов Европейского Союза, вероятно, сталкивались с предупреждением при попытке увеличить громкость наушников, как показано на изображении выше.

В соответствии с правилами, установленными Европейским комитетом по электротехнической стандартизации (CENELEC), все электронные устройства с возможностью воспроизведения мультимедиа, проданные после февраля 2013 г., должны иметь уровень выходной громкости по умолчанию не более 85. дБ. Пользователи могут отменить предупреждение и увеличить громкость максимум до 100 дБ, но при этом предупреждение должно появиться снова через 20 часов воспроизведения музыки.

Хотя мы не собираемся вступать в дискуссию об эффективности этого регулирования в продвижении хороших здоровья, пользователи, которые часто предпочитают обходить это предупреждение, часто задаются вопросом, можно ли этот процесс автоматизированный. Во многих случаях необходимость вручную соглашаться на отмену ограничения громкости довольно раздражает, например, при запуске удаленное воспроизведение музыки на устройстве Bluetooth, поэтому мы хотели найти способ автоматического обхода этого предупреждение.

Решения по обходу «безопасного ограничения громкости» уже существуют, если вы ищете на наших форумах, но до сих пор все решения требовали от вас установить Экспоузд Модуль. Это обязательно ограничивает круг лиц, которые могут его использовать, поскольку Xposed Framework требует от вас наличия root-доступа (что означает разблокированный загрузчик на большинстве телефонов), а также наличия версий Android до Nougat. Но покопавшись в AOSP и различных системных настройках, я нашел способ обойти ограничение высокой громкости/безопасного звука. на всех устройствах без необходимости root.

Следуя этому руководству, вы принимаете на себя все риски, связанные с прослушиванием мультимедиа на высокой громкости.


Учебное пособие по безопасному обходу звуковых предупреждений

Если вы читали мою предыдущую статью о включение режима погружения без root-доступа, то, возможно, вы начали экспериментировать с некоторыми настройками, спрятанными на вашем телефоне. Если вы еще этого не сделали, я настоятельно рекомендую вам это сделать, поскольку я обнаружил, что почти в каждом устройстве есть масса вкусностей, которые только и ждут, чтобы их открыли. Этот трюк ничем не отличается, поскольку мы будем использовать системное свойство для обхода безопасного звукового предупреждения.

В частности, мы будем модифицировать файл System. Глобальная собственность 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, но я знаком только с Tasker, поэтому вам придется вносить изменения самостоятельно, если вы предпочитаете использовать другое приложение. Однако AutoTools имеет решающее значение для этого трюка, поскольку этот плагин позволит нам контролировать настройки безопасности на нашем устройстве.

Как объяснялось в моей статье о переключении режима погружения, нам нужно предоставить WRITE_SECURE_SETTINGS разрешение AutoTools. Это связано с тем, что команда для управления состоянием безопасной громкости звука определена в разделе Настройки. Глобальный class, хотя точный синтаксис команды скрыт в AOSP (как и в режиме погружения). Если вы уже предоставили AutoTools разрешение WRITE_SECURE_SETTINGS после прочтения моего предыдущего руководства по режиму погружения, вы можете пропустить следующий раздел. Если нет, то вам придется его настроить.


В системе управления разрешениями Android приложения определяют разрешения, которые они хотят предоставить, в файле манифеста. Затем пользователи могут предоставлять или отклонять разрешения при установке (до Marshmallow) или по требованию (Marshmallow+). Однако существуют определенные разрешения, которые приложениям не могут быть предоставлены, даже если они запрашивают это в манифесте, например: WRITE_SECURE_SETTINGS. Это связано с тем, что предоставление любому приложению такого мощного разрешения даст этому приложению массу контроля над вашим устройством.

Но есть один обходной путь, который мы можем использовать, чтобы предоставить разрешение WRITE_SECURE_SETTINGS любому приложению, которое нам нужно. Используя АБР менеджер пакетов (pm) инструмент, мы можем предоставить любое разрешение любому приложению, которое захотим (при условии, что приложение запрашивает это разрешение в файле манифеста).

Первое, что вам нужно сделать, это установить двоичный файл ADB на свой компьютер, а затем правильный драйвер для вашего устройства. Затем включите отладку по USB в параметрах разработчика (перейдите в «Настройки» -> «О телефоне» и нажмите «Номер сборки» 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, а не контекст события, который активируется при загрузке телефона, поскольку первый гораздо более надежен, чем второй.

В любом случае нажмите кнопку «Назад», поскольку теперь мы создадим задачу, связанную с этим профилем. Назовите задачу как угодно, это не имеет значения. Как только вы перейдете на экран создания задачи, нажмите кнопку + значок в нижней части экрана, чтобы создать новое действие. Для первого действия перейдите в Задача --> Подождать и пусть он подождет 30 секунд. Это объясняет правило «30 секунд после загрузки», используемое в Android для установки безопасного состояния громкости.

Затем создайте новое действие и перейдите в Плагин -> AutoTools -> Настройки безопасности. Нажмите карандаш, чтобы открыть экран конфигурации AutoTools. Идти к Пользовательская настройка. Для типа настройки введите Глобальный. Для имени введите audio_safe_volume_state. Для типа ввода сделайте это инт. Ради ценности сделайте это 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 ]

читать далее

Создайте новый профиль, на этот раз с Время контекст. К сожалению, мне неизвестен какой-либо способ получить текущее совокупное время воспроизведения мультимедиа без root, поэтому вместо этого мы просто будем периодически устанавливать безопасное состояние тома в неактивное состояние раз в 24 часа (... это не значит, что вы, ребята, на самом деле слушаете 20 часов музыки в течение 24 часов, верно?). В любом случае, интерфейс Tasker для настройки периодической задачи довольно ужасен, но суть в том, что вы хотите установить время «От» и «До» на одно и то же время. Таким образом, Tasker будет относиться к этому так, как будто вы хотите, чтобы Задача запускалась только один раз в установленное время (я сделал это за 1 минуту до полуночи).

Что касается Задачи, просто скопируйте то, что вы сделали для Действия №2 из предыдущего профиля. В этом случае нет нового или другого действия, поскольку все, что мы делаем, — это меняем значение этого глобального системного свойства один раз каждые 24 часа.

Теперь, когда вы настроили оба этих профиля, все готово! Перезагрузите телефон и теперь вы больше не должны видеть предупреждение о «безопасной громкости» при подключении наушников.


Загрузите и импортируйте в Tasker

Как всегда, мы предоставляем XML-файл сценариев, который вы можете загрузить и импортировать. Просто загрузите файлы по ссылке ниже и сохраните их в любом месте во внутренней памяти. Откройте Tasker и отключите режим новичка в настройках. Затем вернитесь на главный экран и нажмите и удерживайте вкладку «Профиль» вверху. Вы должны увидеть всплывающее окно с одним из вариантов «Импорт». Нажмите на него, перейдите туда, где вы сохранили файлы .prf.xml, и выберите этот файл для импорта. Повторите для второго профиля.

Загрузите профиль «Отключить безопасное звуковое предупреждение при загрузке»

Загрузите профиль «Периодическое отключение безопасного звукового предупреждения»

Мы надеемся, что вы найдете этот совет полезным. Дайте нам знать в комментариях ниже, если это работает для вас!