Android отключить предупреждение громкости

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

На Android, в зависимости от вашей версии системы, вы можете иметь встроенную функцию безопасного объема наушников. Как это работает? Он просто продолжает подражать нашей музыке время от времени, слушая наушники примерно на половину объема, чтобы защитить наши уши. Как отключить его?

Если нам не нравится, когда кто-то другой решает нас, как мы должны пользоваться телефоном, это, безусловно, раздражает нас. В некоторых версиях системы, особенно неофициальных (CyanogenMod), отключить опцию безопасного объема наушников невероятно просто. Однако, если у нас есть такая функция, включенная в официальном программном обеспечении, и ее невозможно отключить, вам следует использовать специальное приложение, которое перезаписывает настройки громкости.

Способ 1. Отключите защищенный том, используя настройки

Первый метод, безусловно, работает на модах CyanogenMod, но его необязательно нужно проверять на официальных выпусках Android, в которых мы находим функцию уменьшения громкости. Перейдите в приложение «Настройки» и выберите «Звук».

В настройках звука на вкладке «Громкость» выберите настройку с тем же именем. Android теперь покажет нам все слайдеры, связанные с громкостью звука на Android.

Под полосой громкости вы найдете опцию «Безопасный объем музыки». Конечно, эта опция выбрана по умолчанию, поэтому ее следует отключить.

Когда отображается сообщение, игнорируйте его и отключите защищенный том, несмотря на предупреждение. И он готов — система не будет автоматически отключать музыку во время прослушивания в наушниках.

Способ 2. Используйте приложение «Слуховой аппарат».

Слуховой аппарат это приложение, задача которого — парадоксально в нашем случае — защита слуха. Приложение позволяет устанавливать два разных уровня звука (для динамиков и наушников) и автоматически переключаться между ними в зависимости от того, подключены или отключены наушники.

Как это приложение поможет нам с проблемой автоматического уменьшения объема? Программа, очевидно, берет контроль над регулятором громкости и предотвращает встроенную функцию автоматического сжатия. Все, что вам нужно сделать, — установить максимальный уровень громкости как для наушников, так и для громкоговорителя, и он готов.

Использование приложения очень просто. После его запуска мы убеждаемся, что мы находимся на вкладке «Медиа» (отвечаем за прослушивание музыки), а не в Ringer (он отвечает за громкость звонка). Мы выбираем Media и используем два слайдера ниже.

Первый отвечает за том, что громкость будет установлена ​​после подключения наушников, вторая управляет громкостью, которая будет активироваться автоматически, когда они будут отключены. Мы устанавливаем одинаковое значение в обоих случаях и касаемся кнопки Enable.

Слуховой сейф теперь активирован и контролирует автоматический громкость. Операция программы и устранение автоматического отключения звука подтверждены несколькими пользователями смартфона LG G2, в котором есть проблема приглушения.

Источник

[Из песочницы] Как отключить предупреждение о вреде долгого прослушивания аудио (Android)

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

Появляется оно только при прослушивании аудио через внешнее устройство (наушники/колонки). Для тех, кто не встречался с таким, небольшое пояснение: представьте, что вы слушаете музыку в наушниках, довольно громкую. Внезапно звук становится тише. Вы пытаетесь прибавить громкость, используя кнопки на корпусе, но не выходит. Достав устройство из кармана и сняв блокировку, вы и увидите такое предупреждение. Только после согласия с ним можно будет прибавить громкость обратно.

Читайте также:  Обычные звонки для андроид

Да, предупреждение разумное, но появляется оно в непредсказуемый момент, иногда самый неподходящий: когда вы в общественном транспорте/за рулём/зимой на улице/когда у вас грязные руки и т.д. Доставать устройство, снимать блокировку, соглашаться с предупреждением, класть устройство обратно в этих случаях неудобно. А в случае, если подключены колонки, а не наушники, сообщение не совсем уместно.

Почему оно возникает

Данное предупреждение — не собственная инициатива авторов платформы. Всё дело в том, что существует WHO-ETU стандарт “безопасного прослушивания” (safe listening). В европейских и некоторых других странах его выполнение обязательно. В стандарте описывается, как долго можно прослушивать аудио в зависимости от громкости с минимальным риском снижения слуха. Например, для взрослого человека безопасная недельная “доза” звука — 1.6 Pa 2 h, что эквивалентно 20 часам прослушивания на громкости 83 dB.

Реализация

В зависимости от mcc (mobile country code), режим safe listening может быть включен или выключен. Определяется это значением ресурса R.bool.config_safe_media_volume_enabled .

Если режим включен, то система считает время прослушивания на небезопасной громкости (выше 85 dB), и периодически сохраняет значение в переменную Settings.Secure.UNSAFE_VOLUME_MUSIC_ACTIVE_MS . Когда значение достигает 20 часов, выводится предупреждение. После согласия с предупреждением значение сбрасывается, и подсчёт начинается заново.

Такая реализация довольно простая и не учитывает, например, в течение какого времени пользователь прослушал эти 20 часов: возможно, за пару дней, а, может, слушал по 6-7 минут в течение полугода (в соответствии со стандартом это не является угрозой для слуха).

Логика safe listening сосредоточена в классе классе AudioService.java, в нём можно увидеть соответствующие поля:

Поле mMusicActiveMs содержит число миллисекунд, прослушанных пользователем на небезопасной громкости со времени последнего подтверждения диалога. Начальное значение загружается из переменной Settings.Secure.UNSAFE_VOLUME_MUSIC_ACTIVE_MS . В эту же переменную каждую минуту записывается новое значение mMusicActiveMs.

Также есть поле mSafeMediaVolumeState , оно содержит текущее состояние системы safe listening:

  • DISABLED : отключена
  • ACTIVE : включена, и при этом лимит прослушивания достигнут, а значит нельзя разрешать пользователю увеличивать громкость, пока он не согласится с предупреждением
  • INACTIVE : включена, лимит пока не достигнут

Метод проверки превышения лимита выглядит так:

Как отключить предупреждение

Чтобы выключить safe listening, нужно добиться того, чтобы переменной mSafeMediaVolumeState на этапе конфигурации было присвоено значение DISABLED .

Посмотрим, где изначально задаётся значение:

Видим, что помимо значения ресурса R.bool.config_safe_media_volume_enabled , есть два свойства, позволяющих включать/выключать систему safe listening: audio.safemedia.force и audio.safemedia.bypass.

Чтобы отключить предупреждение, нужно установить значение audio.safemedia.bypass=true в файле system/build.properties. Но для этого нужны root-права. Если их нет, то нужно разбираться дальше и искать другой способ.

Как отключить предупреждение без root

Давайте посмотрим, что происходит при закрытии диалога с предупреждением по нажатию ОК, и попробуем это воспроизвести:

Вызывается метод disableSafeMediaVolume у инстанса AudioManager .

Он помечен аннотацией @hide . Это означает, что метод не будет включён в public API несмотря на модификатор public. До Android 9 это легко можно было обойти используя рефлекшн. Теперь же такой метод по-прежнему можно вызывать, но уже с помощью трюка под названием double-reflection:

Вызов заканчивается исключением
java.lang.SecurityException: Only SystemUI can disable the safe media volume: Neither user 10307 nor current process has android.permission.STATUS_BAR_SERVICE.
Разрешение STATUS_BAR_SERVICE имеет protectionLevel=«signature|privileged», получить его не получится.

Что ж, тогда попробуем так. Мы будем следить за переменной Settings.Secure.UNSAFE_VOLUME_MUSIC_ACTIVE_MS , в которую периодически сохраняется текущее значение mMusicActiveMs . Когда значение начнёт приближаться к 20 часам, будем его сбрасывать. Затем нужно будет сделать так, чтобы AudioService прочитал новое значение из настроек.

Читайте также:  Shadowrun dragonfall для android

Прочитать значение Settings.Secure.UNSAFE_VOLUME_MUSIC_ACTIVE_MS можно так:

То же самое, используя adb:

А чтобы записать значение, приложению потребуется разрешение android.permission.WRITE_SECURE_SETTINGS .

Оно имеет protectionLevel=«signatureprivilegeddevelopment», а значит его можно выдать приложению используя adb:

Само значение записать можно так:

То же самое можно сделать с помощью adb:

Сбрасывать лучше в 1, как это сделано в AudioManager, а не в 0. Так как 0 соответствует состоянию ACTIVE.

Теперь нужно, чтобы AudioService прочитал новое значение, и обновил значение локальной переменной mMusicActiveMs .

Есть подходящий метод в AudioManager.java

Он инициирует вызов метода readAudioSettings в AudioService , где происходит загрузка mMusicActiveMs из настроек.

Метод помечен аннотацией @hide . Его вызов с помощью double-reflection вызывает исключение:
java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
Да, аннотация @hide здесь тоже неспроста. Получить данное разрешение мы, конечно не можем. Оно имеет protectionLevel=«signatureinstaller».

Остаётся один способ заставить AudioService прочитать новое значение — его перезапуск. Просто так перезапустить системный сервис нельзя. Нужно или перезагрузить устройство, или переключиться на другого пользователя, а затем вернуться обратно.

Теперь настало время проверить теорию.

Устанавливаем unsafe_volume_music_active_ms = 71 990 000 (останется 10 секунд, в течение которых можно прослушивать музыку на высокой громкости)

Перезапускаем устройство (можно вместо этого переключиться на другого пользователя, а потом вернуться):

Подключаем наушники, включаем музыку погромче. В течение минуты появляется диалог.

Теперь повторяем те же действия, но присваиваем unsafe_volume_music_active_ms = 1. Включаем музыку, ждём минуту. Диалог не появляется.

Итоги

Чтобы отключить предупреждение, можно сделать следующее:

При наличии root-прав

Установить значение audio.safemedia.bypass=true в файле system/build.properties

Нужно следить за значением Settings.Secure.UNSAFE_VOLUME_MUSIC_ACTIVE_MS , и не давать ему подниматься выше 72 000 000 (20 часов). После сброса значения нужно перезапускать устройство (или переключаться на другого пользователя, а затем возвращаться обратно).

Я написала код простого приложения, которое делает эту работу, и напоминает о необходимости перезагрузить устройство/перелогиниться.

Источник

Как отключить предупреждение о громкости на Android —

Многие пользователи Android хотят знать, как отключить предупреждение о безопасной громкости на устройствах Android. Это может раздражать, когда вы хотите максимизировать громкость и должны принять диалог, чтобы поднять громкость на определенную величину. Причина, по которой телефоны Android делают это, связана с правилами, установленными Европейским комитетом по электротехнической стандартизации, которые предписывают, что устройства воспроизведения мультимедиа должны иметь максимальное выходное значение 85 дБ — 85 дБ, а пользователь должен принять предупреждение.

Это затрудняет работу пользователей Android, особенно если вы, например, запускаете воспроизведение мультимедиа на удаленном устройстве Bluetooth. К счастью, существует множество способов навсегда отключить предупреждение о предельном уровне громкости, и в этом руководстве по Appual вы найдете для этого корневые и некорневые методы.

Как отключить предупреждение о громкости на No Root Android

Требования:

  • Приложение Tasker
  • Приложение AutoTools
  • Инструменты ADB на вашем ПК (см. Руководство по применению «Как установить ADB в Windows»)

Первое, что вам нужно сделать, это загрузить все требования, а затем включить отладку по USB на вашем Android-устройстве.

Зайдите в Настройки> О программе> нажмите номер сборки 7 раз, пока не активируется режим разработчика. Затем перейдите в «Настройки»> «Параметры разработчика»> «Включить отладку по USB».

Нам нужно предоставить WRITE_SECURE_SETTINGS приложению AutoTools, потому что в основном мы настраиваем флаг в настройке манифеста Android. Класс Global — приложения почти никогда не имеют разрешения изменять что-либо в манифесте Android, потому что это даст приложению огромное количество контроля над вашим устройством, но, к счастью, с АБР мы можем предоставить это разрешение.

Читайте также:  Wifi receiver android что это

Так что запустите терминал ADB на вашем компьютере (удерживая Shift + правый клик внутри вашего основного пути ADB и выберите «Открыть окно команд здесь»).

В терминале ADB введите следующую команду:

Теперь, когда AutoTools может записывать в манифест, мы собираемся настроить Tasker, чтобы он давал команду AutoTools на отключение безопасного звука при загрузке.

Запустите приложение Tasker и создайте новый профиль, нажав значок + в правом нижнем углу.

Добавить новый Событие контекст и перейти к Tasker> Monitor Start. Мы собираемся использовать контекст события для запуска при запуске Tasker, а не при загрузке телефона, потому что это более надежный метод — но Tasker запускается при загрузке телефона в любом случае, так что это почти то же самое.

Нажмите кнопку назад и создайте новый задача связан с этим профилем. На экране создания задачи нажмите значок + в нижней средней части экрана, чтобы создать новый действие.

Для действия установите его на Задача> Ждать и подождите 30 секунд. При этом применяется правило «30 секунд после загрузки», которое Android использует для установки безопасного уровня громкости.

Далее вам нужно будет создать новый действие и перейти к Плагин> Автоинструменты> Настройки безопасности. Нажмите кнопку карандаша, чтобы открыть меню конфигурации для AutoTools.

Идти к Пользовательские настройки и настроить его именно такой:

  • Тип настройки: Глобальная
  • Имя: audio_safe_volume_state
  • Тип входа: int
  • Значение: 2

Убедитесь, что вы все правильно вставили, иначе это не сработает.

Теперь вернитесь в главное меню Tasker, и мы создадим новый профиль. Это будет для людей, которые почти никогда не перезагружают свои устройства Android — причина, по которой мы должны это сделать, заключается в том, что Android автоматически сбрасывает безопасный предел громкости через 20 часов. Когда вы перезагружаете свой телефон, мы, конечно, сбрасываем этот лимит, но если вы почти никогда не перезагружаете свое устройство Android, нам нужен отдельный профиль Tasker, чтобы периодически сбрасывать таймер на пределе безопасной громкости.

В Tasker создайте новый профиль с Время контекст.

Установите для параметра «Редактирование времени» одинаковое время для «От» и «До» — это потому, что мы хотим, чтобы Задача запускалась только один раз в определенное время. 23:59 хорошо, как видно на скриншоте ниже.

Для задачи действие, просто делай то же, что и для предыдущего профиля.

Перезагрузите телефон, и предупреждение о безопасной громкости должно быть отключено!

Как отключить предупреждение о томе на Android с рутом

Для устройств на базе Android это гораздо проще — буквально тонна загружаемых настроек и модулей для достижения того, что мы хотим. Лучший способ будет через Xposed.

Если на вашем Android-устройстве не установлена ​​программа Xposed, полезно прочитать следующие руководства Appual:

  • Как установить Xposed Framework на телефоны Android
  • Как полностью создать тему Android с модулями Xposed
  • Топ 5 лучших модулей Xposed для вашего устройства Android

В любом случае, после того, как вы установили Xposed на ваше устройство Android, появятся многочисленные модули Xposed, которые отключат предупреждение о безопасной громкости. Лучшие из них:

GravityBox (в разделе «Media Tweaks» опция предупреждения о безопасной громкости не найдена) — для GravityBox выберите модуль, соответствующий вашей версии Android! Например, GravityBox [N] для устройств Androud Nougat, GravityBox [MM] для устройств Marshmallow и т. Д.

После установки модуля по вашему выбору, просто включите его и перезагрузите телефон, чтобы активировать его, затем настройте модуль при необходимости (например, GravityBox — NSVW должен работать немедленно).

Источник

Оцените статью