- Как настроить звук на Андроид
- Как настроить громкость на Андроид
- Чистота звука на Андроид
- Повышаем качество звука на Андроид
- Как увеличить громкость динамика на Андроид
- Как увеличить громкость Андроид через инженерное меню
- Как увеличить громкость звука Андроид при помощи программы Volume+
- Android и звук: как делать правильно
Как настроить звук на Андроид
Как настроить звук на Андроид. Звук одна из важнейших черт любого смартфона или планшета, поэтому жизненно необходимо чтобы звук был достаточно громким и качественным. В этой статье мы поговорим о том как настроить громкость на Андроид, а также поднять качество звука.
Как настроить громкость на Андроид
Конечно мы не будем говорить о профессиональной настройке звучания, но необходимые основы постараемся затронуть. Качество звука можно разделить на несколько основных параметров:
- Громкость звука — она должна быть достаточна, чтобы услышать звонок телефона в очень шумном месте или послушать музыку как из магнитофона
- Точное воспроизведение аудиофайла, соответствие амплитуды нужной частоте
- Количество шумов — вряд ли Вам понравится слушать “хрипящий” или “захлебывающийся” динамик на полной или даже средней громкости
И на каждом из этих параметров мы остановимся поподробнее. Начнем с последнего.
Чистота звука на Андроид
Количество шумов на Android напрямую зависит от аппаратной части вашего устройства, а точнее от аудиочипа и устройства вывода звука, будь то динамик, наушники или внешняя колонка. В устройствах верхнего ценового сегмента обычно устанавливают качественные аудиочипы с отличными звуковыми показателями, а с уменьшением стоимости аппарата падает и качество аудиочипа, за редкими исключениями. С внешним динамиком такая тенденция сохраняется, поэтому на хорошо настроенном девайсе понизить количество шумов практически невозможно.
А значит нам стоит уделить больше внимания остальным двум параметрам звука на Андроиде.
Повышаем качество звука на Андроид
Второй показатель может быть наиболее субъективным, поэтому скорее всего потребуется его настраивать под себя. Многие прошивки для Андроид имеют уже установленные эквалайзеры, которые и помогут в настройке звука Android. Но мы рассмотри универсальный способ, специальное приложение Viper4android , которое отлично себя зарекомендовало среди тысяч пользователей. Единственный его недостаток — это необходимость Root прав , для изменения системных файлов.
Давайте рассмотрим программу поподробнее и узнаем как настроить качество звука на Андроид. Для начала скачайте программу Viper4android и установите ее на ваш Android девайс. Далее давай те по пунктам:
- Запускаем программу
- Просит обновить драйвер, соглашаемся и выбираем желаемое качество звука — Высокое качество, Среднее и Экономичный (стоит отметить, что уровень качества влияет на расход заряда батареи)
- После выбора качества, попросит разрешения на использование Root прав, предоставляем
- После обновления драйвера ничего не нажимаем, перезагружаем устройство
- Теперь можно приступать к настройке звука
Viper4android позволяет добиться просто невероятно сочного и качественного звука, даже при невысоком изначальном потенциале устройства.
Мы рассмотрим самые лучшие варианты настройки этого многофункционального приложения.
В программе нажимаем кнопку меню, “Интерфейс” и выбираем “Эксперт”. Теперь Вам открыты все функции настройки звука в приложении.
Кроме того в программе есть возможность установить готовые настройки драйвера с таких популярных “улучшайзеров” как Beats Audio, Ipod, Sony Ericsson и другие. Для этого пролистайте вниз до Конвольвера, включите его и выберите “Импульс”, изначально там конечно же ничего не будет, но вы можете скачать нужный файл настройки (.irs) по этой ссылке и установить его в папку ViPER4Android/Kernel в памяти устройства. После этого вы сможете выбрать установленный улучшайзер в пункте “Импульс”. Далее по своему вкусу настраиваем все остальные настройки до наилучшего уровня.
Если после многочисленных настроек, должного эффекта улучшения качества звука не последовало, возможно существует какой-то конфликт с другой программой. Попробуйте отключить любые другие улучшайзеры звука в вашей прошивке, а также попробуйте включить в настройках программы совместимость с другими плеерами.
Наконец перейдем к наиболее важному вопросу: Как увеличить и настроить громкость на Андроид? Для начала нужно понять какую громкость мы хотим увеличить. Это может быть громкость внешнего динамика, для того, чтобы лучше слышать звонок или слушать музыку, громкость в наушниках или гарнитуре, или громкость разговорного динамика Андроид, чтобы лучше слышать собеседника, а может быть и громкость микрофона Андроид.
Как увеличить громкость динамика на Андроид
Для начала давайте убедимся, что мы максимально увелчиили громкость Андроид в настройках аппарата. Для этого зайдите в «Настройки» -> «Звук» -> «Громкость». В этом меню можно настроить уровень громкости звонков и СМС уведомлений, громкость будильника, а также громкость музыки и видео.
Очень приятно слушать музыку через громкий динамик, особенно когда он встроен в вашем телефоне или планшете, но в большинстве случаев производитель Андроид девайсов не выкручивают громкость на максимум, поэтому у нас есть возможность увеличить громкость андроид при помощи различных способов. Одним из таких способов является инженерное меню. Однако, если вы боитесь нажать что-то не то, лучше воспользоваться более безопасным методом.
Как увеличить громкость Андроид через инженерное меню
К сожалению, далеко не все смартфоны имеют доступ к инженерному меню, поэтому этот способ подойдет для устройств на процессоре Mediatek и некоторых других. Итак для входа в инженерное меню вам понадобится ввести код через номеронабиратель, коды можно узнать в таблице ниже.
Если на вашем устройстве стоит чипсет MTK и есть рут права вы можете скачать приложение MobileUncle Tools , оно сильно облегчит процесс настройки.
После входа в инженерное меню, необходимо найти раздел Audio, в нем то все и спрятано:
- Normal Mode — в обычном режиме, без внешних аудиоустройств
- Headset Mode — режим подключенной гарнитуры (наушников)
- LoudSpeaker Mode — режим громкой связи
- Headset_LoudSpeaker Mode — режим громкой связи с подключенной гарнитурой
- Speech Enhancement — режим разговора по телефону
Выбираем нужный режим для настройки — Normal Mode, далее необходимо выбарть тип настраиваемого устройства:
- Sip — громкость интернет звонков
- Mic — громкость микрофона
- Sph — громкость разговорного динамика (для разговора по телефону)
- Sph2 — второй разговорный динамик (редкость)
- Sid — не трогаем (возможны проблемы!)
- Media – то что нам нужно! Громкость воспроизведения медиафайлов (Музыка, Игры, Видео)
- Ring — тоже, то что надо! уровень громкости звонка
- FMR — громкость FM-радио
Скорее всего нам нужен максимальный уровень, а именно 6. И изменяем значение на нужное, максимум 255, но я не советую его ставить, возможно ухудшится качество звука и уменьшится срок службы динамика, оптимальным значением будет 220-240.
На видео вы можете посмотреть пример настройки программы MobileUncle Tools:
Как увеличить громкость звука Андроид при помощи программы Volume+
Данный способ более универсальный, Вам просто нужно скачать программу для увеличения громкости Андроид — Volume+ и запустить ее. Далее Выбираем нужный мод, как и в инженерном меню. Speaker — это внешний динамик, Headset — гарнитура, а Bluetooth — беспроводная гарнитура или колонка.
- Включаем Speaker Modifications
- Нажимаем на Volume Level
- Выбираем нужный уровень усиления, вплоть до +4
- Также сразу можно усилить басы — Bass Enhance
Вот и все, за несколько минут мы увеличили громкость Андроид до нужного уровня.
Источник
Android и звук: как делать правильно
В статье рассматривается архитектура и API для создания приложений, воспроизводящих музыку. Мы напишем простое приложение, которое будет проигрывать небольшой заранее заданный плейлист, но «по-взрослому» — с использованием официально рекомендуемых практик. Мы применим MediaSession и MediaController для организации единой точки доступа к медиаплееру, и MediaBrowserService для поддержки Android Auto. А также оговорим ряд шагов, которые обязательны, если мы не хотим вызвать ненависти пользователя.
В первом приближении задача выглядит просто: в activity создаем MediaPlayer, при нажатии кнопки Play начинаем воспроизведение, а Stop — останавливаем. Все прекрасно работает ровно до тех пор, пока пользователь не выйдет из activity. Очевидным решением будет перенос MediaPlayer в сервис. Однако теперь у нас встают вопросы организации доступа к плееру из UI. Нам придется реализовать binded-сервис, придумать для него API, который позволил бы управлять плеером и получать от него события. Но это только половина дела: никто, кроме нас, не знает API сервиса, соответственно, наша activity будет единственным средством управления. Пользователю придется зайти в приложение и нажать Pause, если он хочет позвонить. В идеале нам нужен унифицированный способ сообщить Android, что наше приложение является плеером, им можно управлять и что в настоящий момент мы играем такой-то трек из такого-то альбома. Чтобы система со своей стороны подсобила нам с UI. В Lollipop (API 21) был представлен такой механизм в виде классов MediaSession и MediaController. Немногим позже в support library появились их близнецы MediaSessionCompat и MediaControllerCompat.
Следует сразу отметить, что MediaSession не имеет отношения к воспроизведению звука, он только об управлении плеером и его метаданными.
MediaSession
Итак, мы создаем экземпляр MediaSession в сервисе, заполняем его сведениями о нашем плеере, его состоянии и отдаем MediaSession.Callback, в котором определены методы onPlay, onPause, onStop, onSkipToNext и прочие. В эти методы мы помещаем код управления MediaPlayer (в примере воспользуемся ExoPlayer). Наша цель, чтобы события и от аппаратных кнопок, и из окна блокировки, и с часов под Android Wear вызывали эти методы.
Полностью рабочий код доступен на GitHub (ветка master). В статьи приводятся только переработанные выдержки из него.
Для доступа извне к MediaSession требуется токен. Для этого научим сервис его отдавать
и пропишем в манифест
MediaController
Теперь реализуем activity с кнопками управления. Создаем экземпляр MediaController и передаем в конструктор полученный из сервиса токен.
MediaController предоставляет как методы управления плеером play, pause, stop, так и коллбэки onPlaybackStateChanged(PlaybackState state) и onMetadataChanged(MediaMetadata metadata). К одному MediaSession могут подключиться несколько MediaController, таким образом можно легко обеспечить консистентность состояний кнопок во всех окнах.
Наша activity работает, но ведь идея исходно была, чтобы из окна блокировки тоже можно было управлять. И тут мы приходим к важному моменту: в API 21 полностью переделали окно блокировки, теперь там отображаются уведомления и кнопки управления плеером надо делать через уведомления. К этому мы вернемся позже, давайте пока рассмотрим старое окно блокировки.
Как только мы вызываем mediaSession.setActive(true), система магическим образом присоединяется без всяких токенов к MediaSession и показывает кнопки управления на фоне картинки из метаданных.
Однако в силу исторических причин события о нажатии кнопок приходят не напрямую в MediaSession, а в виде бродкастов. Соответственно, нам надо еще подписаться на эти бродкасты и перебросить их в MediaSession.
MediaButtonReceiver
Для этого разработчики Android любезно предлагают нам воспользоваться готовым ресивером MediaButtonReceiver.
Добавим его в манифест
MediaButtonReceiver при получении события ищет в приложении сервис, который также принимает «android.intent.action.MEDIA_BUTTON» и перенаправляет его туда. Поэтому добавим аналогичный интент-фильтр в сервис
Если подходящий сервис не найден или их несколько, будет выброшен IllegalStateException.
Теперь в сервис добавим
Метод handleIntent анализирует коды кнопок из intent и вызывает соответствующие коллбэки в mediaSession. Получилось немного плясок с бубном, но зато почти без написания кода.
На системах с API >= 21 система не использует бродкасты для отправки событий нажатия на кнопки и вместо этого напрямую обращается в MediaSession. Однако, если наш MediaSession неактивен (setActive(false)), его пробудят бродкастом. И для того, чтобы этот механизм работал, надо сообщить MediaSession, в какой ресивер отправлять бродкасты.
Добавим в onCreate сервиса
На системах с API Так это выглядит
Android 4.4
MIUI 8 (базируется на Android 6, то есть теоретически окно блокировки не должно отображать наш трек, но здесь уже сказывается кастомизация MIUI).
Уведомления
Однако, как ранее упоминалось, начиная с API 21 окно блокировки научилось отображать уведомления. И по этому радостному поводу, вышеописанный механизм был выпилен. Так что теперь давайте еще формировать уведомления. Это не только требование современных систем, но и просто удобно, поскольку пользователю не придется выключать и включать экран, чтобы просто нажать паузу. Заодно применим это уведомление для перевода сервиса в foreground-режим.
Нам не придется рисовать кастомное уведомление, поскольку Android предоставляет специальный стиль для плееров — Notification.MediaStyle.
Добавим в сервис два метода
И добавим вызов refreshNotificationAndForegroundStatus(int playbackState) во все коллбэки MediaSession.
Android 4.4
Android 7.1.1
Android Wear
Started service
В принципе у нас уже все работает, но есть засада: наша activity запускает сервис через binding. Соответственно, после того, как activity отцепится от сервиса, он будет уничтожен и музыка остановится. Поэтому нам надо в onPlay добавить
Никакой обработки в onStartCommand не надо, наша цель не дать системе убить сервис после onUnbind.
А в onStop добавить
В случае, если к сервису привязаны клиенты, stopSelf ничего не делает, только взводит флаг, что после onUnbind сервис можно уничтожить. Так что это вполне безопасно.
ACTION_AUDIO_BECOMING_NOISY
Продолжаем полировать сервис. Допустим пользователь слушает музыку в наушниках и выдергивает их. Если эту ситуацию специально не обработать, звук переключится на динамик телефона и его услышат все окружающие. Было бы хорошо в этом случае встать на паузу.
Для этого в Android есть специальный бродкаст AudioManager.ACTION_AUDIO_BECOMING_NOISY.
Добавим в onPlay
В onPause и onStop
И по факту события встаем на паузу
Android Auto
Начиная с API 21 появилась возможность интегрировать телефон с экраном в автомобиле. Для этого необходимо поставить приложение Android Auto и подключить телефон к совместимому автомобилю. На экран автомобиля будет выведены крупные контролы для управления навигацией, сообщениями и музыкой. Давайте предложим Android Auto наше приложение в качестве поставщика музыки.
Если у вас под рукой нет совместимого автомобиля, что, согласитесь, иногда бывает, можно просто запустить приложение и экран самого телефона будет работать в качестве автомобильного.
Исходный код выложен на GitHub (ветка MediaBrowserService).
Прежде всего надо указать в манифесте, что наше приложение совместимо с Android Auto.
Добавим в манифест
Здесь automotive_app_desc — это ссылка на файл automotive_app_desc.xml, который надо создать в папке xml
Преобразуем наш сервис в MediaBrowserService. Его задача, помимо всего ранее сделанного, отдавать токен в Android Auto и предоставлять плейлисты.
Поправим декларацию сервиса в манифесте
Во-первых, теперь наш сервис экспортируется, поскольку к нему будут подсоединяться снаружи.
И, во-вторых, добавлен интент-фильтр android.media.browse.MediaBrowserService.
Меняем родительский класс на MediaBrowserServiceCompat.
Поскольку теперь сервис должен отдавать разные IBinder в зависимости от интента, поправим onBind
Имплементируем два абстрактных метода, возвращающие плейлисты
И, наконец, имплементируем новый коллбэк MediaSession
Здесь mediaId — это тот, который мы отдали в setMediaId в onLoadChildren.
Плейлист
Трек
UPDATE от 27.10.2017: Пример на GitHub переведен на targetSdkVersion=26. Из релевантных теме статьи изменений необходимо отметить следующее:
- android.support.v7.app.NotificationCompat.MediaStyle теперь deprecated. Вместо него следует использовать android.support.v4.media.app.NotificationCompat.MediaStyle. Соответственно, больше нет необходимости использовать android.support.v7.app.NotificationCompat, теперь можно использовать android.support.v4.app.NotificationCompat
- Метод AudioManager.requestAudioFocus(OnAudioFocusChangeListener l, int streamType, int durationHint) теперь тоже deprecated. Вместо него надо использовать AudioManager.requestAudioFocus(AudioFocusRequest focusRequest). AudioFocusRequest — новый класс, добавленный с API 26, поэтому не забывайте проверять на API level.
Создание AudioFocusRequest выглядит следующим образом
Теперь запрашиваем фокус
Разумеется, все вышеописанные изменения вносить необязательно, старые методы работать не перестали.
Вот мы и добрались до конца. В целом тема эта довольно запутанная. Плюс отличия реализаций на разных API level и у разных производителей. Очень надеюсь, что я ничего не упустил. Но если у вас есть, что исправить и добавить, с удовольствием внесу изменения в статью.
Еще очень рекомендую к просмотру доклад Ian Lake. Доклад от 2015 года, но вполне актуален.
Источник