HXAudioPlayer
huhx0015/HXAudioPlayerHXAudioPlayer — кастомная обёртка над MediaPlayer и SoundPool для Android 2.3+. Упрощает воспроизведение музыки и звуков, устраняет известные баги API. Подходит для игр и мобильных приложений.
Установка
git clone https://github.com/huhx0015/HXAudioPlayer.gitREADME
HX Audio Player
РАЗРАБОТЧИК: huhx0015
Описание
HX Audio Player — кастомная аудиобиблиотека-обёртка для Android 2.3 и выше. Изначально разработана как аудиобиблиотека для игр, HX Audio Player представляет собой простой альтернативный подход к реализации воспроизведения музыки и звуков в Android-приложениях. HX Audio Player также реализует бесшовные обходные решения для устранения существующих багов и ограничений API MediaPlayer и SoundPool.
HX Audio Player использовался в таких приложениях, как Dragon Geo, Cid's Aerial Tours и Chrono Maps.
Демонстрационное приложение, входящее в состав проекта, показывает пример работы библиотеки HX Audio Player.
Инструкция
Воспроизведение музыки
Для загрузки и воспроизведения музыкальных файлов достаточно объявить в коде следующее:
Воспроизведение музыки (ресурс):
HXMusic.music()
.load(R.raw.my_song_name) // Задаёт ресурс песни. [ОБЯЗАТЕЛЬНО]
.title("My Awesome Song") // Задаёт название песни. [ОПЦИОНАЛЬНО]
.artist("Mr. Anonymous") // Задаёт исполнителя. [ОПЦИОНАЛЬНО]
.date("January 1, 1998") // Задаёт дату. [ОПЦИОНАЛЬНО]
.at(5) // Задаёт позицию начала воспроизведения. [ОПЦИОНАЛЬНО]
.gapless(true) // Включает бесшовное воспроизведение. [ОПЦИОНАЛЬНО]
.looped(true) // Включает зацикливание. [ОПЦИОНАЛЬНО]
.play(this); // Воспроизводит песню. [ОБЯЗАТЕЛЬНО]Воспроизведение музыки (путь):
HXMusic.music()
.load("http://some-fake-url.com/song.mp3") // Задаёт путь к файлу. [ОБЯЗАТЕЛЬНО]
.title("My Awesome Song") // Задаёт название песни. [ОПЦИОНАЛЬНО]
.artist("Mr. Anonymous") // Задаёт исполнителя. [ОПЦИОНАЛЬНО]
.date("January 1, 1998") // Задаёт дату. [ОПЦИОНАЛЬНО]
.at(5) // Задаёт позицию начала воспроизведения. [ОПЦИОНАЛЬНО]
.gapless(true) // Включает бесшовное воспроизведение. [ОПЦИОНАЛЬНО]
.looped(true) // Включает зацикливание. [ОПЦИОНАЛЬНО]
.play(this); // Воспроизводит песню. [ОБЯЗАТЕЛЬНО]Пауза:
HXMusic.pause(); // Ставит на паузу воспроизводимую в фоне песню.
Возобновление:
HXMusic.resume(this); // Возобновляет воспроизведение последней песни с места остановки.Остановка:
HXMusic.stop(); // Останавливает всю музыку, играющую в фоне.
Статус воспроизведения:
HXMusic.isPlaying(); // Возвращает boolean: играет ли песня в данный момент.Позиция воспроизведения:
HXMusic.getPosition(); // Возвращает текущую позицию в виде int.
HXMusic.setPosition(0); // Устанавливает текущую позицию воспроизведения.Слушатель событий:
HXMusic.setListener(this); // Устанавливает интерфейс HXMusicListener для мониторинга событий.Статус:
HXMusic.getStatus(); // Возвращает строку с текущим статусом HXMusic.
Включение/отключение музыки:
HXMusic.enable(true); // Включает/отключает воспроизведение музыки.
Логирование:
HXMusic.logging(true); // Включает/отключает вывод логов.
Очистка:
HXMusic.clear(); // Очищает экземпляр HXMusic. Вызывать, когда HXMusic больше не нужен.Всё так просто! Не нужно писать сложный код для инициализации MediaPlayer — HX Audio Player берёт это на себя!
Воспроизведение звуков
Для загрузки и воспроизведения звуковых эффектов объявите в коде следующее:
Воспроизведение звука:
HXSound.sound()
.load(R.raw.my_sound_effect) // Задаёт ресурс звукового эффекта. [ОБЯЗАТЕЛЬНО]
.looped(true) // Включает зацикливание. [ОПЦИОНАЛЬНО]
.play(this); // Воспроизводит звуковой эффект. [ОБЯЗАТЕЛЬНО]Пауза:
HXSound.pause(); // Ставит на паузу все зацикленные звуки в фоне.
Возобновление:
HXSound.resume(); // Возобновляет воспроизведение всех зацикленных звуков.Предзагрузка звуков:
HXSound.load(); // Предварительно загружает список ресурсов в HXSound.Включение нескольких звуковых движков:
HXSound.engines(2); // Задаёт количество звуковых движков (рекомендуется 2). Только для API 9–10.Включение/отключение звука:
HXSound.enable(true); // Включает/отключает воспроизведение звуков.
Повторная инициализация:
HXSound.reinitialize(this); // Ручная повторная инициализация звуковых движков. Только для Android API 9–10.Логирование:
HXSound.logging(true); // Включает/отключает вывод логов.
Очистка:
HXSound.clear(); // Очищает экземпляр HXSound. Вызывать, когда HXSound больше не нужен.Вуаля! Тоже очень просто! Никакой возни с SoundPool!
Примечания
-
ANDROID API 9–10: На устройствах с Android API 9–10 класс
HXSoundпо умолчанию создаёт два экземпляраHXSoundEngine. Это помогает минимизировать проблему нехватки памяти SoundPool в старых версиях Android. Рекомендуется использовать звуковые эффекты небольшого размера и битрейта (менее 100 КБ и 64 кбит/с или ниже). На устройствах с Android API 11 и выше используется один экземплярHXSoundEngine, так как ограничение буфера в 1 МБ там отсутствует. -
БЕСШОВНОЕ ВОСПРОИЗВЕДЕНИЕ: На устройствах с Android 16 и выше поддерживается бесшовное (gapless) воспроизведение аудио.