Claude Info
Мобильная разработка

HXAudioPlayer

huhx0015/HXAudioPlayer

HXAudioPlayer — кастомная обёртка над MediaPlayer и SoundPool для Android 2.3+. Упрощает воспроизведение музыки и звуков, устраняет известные баги API. Подходит для игр и мобильных приложений.

Установка

terminal
bash
git clone https://github.com/huhx0015/HXAudioPlayer.git

README

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.

Инструкция

Воспроизведение музыки

Для загрузки и воспроизведения музыкальных файлов достаточно объявить в коде следующее:

Воспроизведение музыки (ресурс):

java
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);                 // Воспроизводит песню. [ОБЯЗАТЕЛЬНО]

Воспроизведение музыки (путь):

java
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(); // Ставит на паузу воспроизводимую в фоне песню.

Возобновление:

java
HXMusic.resume(this);          // Возобновляет воспроизведение последней песни с места остановки.

Остановка:

HXMusic.stop(); // Останавливает всю музыку, играющую в фоне.

Статус воспроизведения:

java
HXMusic.isPlaying();           // Возвращает boolean: играет ли песня в данный момент.

Позиция воспроизведения:

java
HXMusic.getPosition();         // Возвращает текущую позицию в виде int.
HXMusic.setPosition(0);        // Устанавливает текущую позицию воспроизведения.

Слушатель событий:

java
HXMusic.setListener(this);     // Устанавливает интерфейс HXMusicListener для мониторинга событий.

Статус:

HXMusic.getStatus(); // Возвращает строку с текущим статусом HXMusic.

Включение/отключение музыки:

HXMusic.enable(true); // Включает/отключает воспроизведение музыки.

Логирование:

HXMusic.logging(true); // Включает/отключает вывод логов.

Очистка:

java
HXMusic.clear();               // Очищает экземпляр HXMusic. Вызывать, когда HXMusic больше не нужен.

Всё так просто! Не нужно писать сложный код для инициализации MediaPlayer — HX Audio Player берёт это на себя!

Воспроизведение звуков

Для загрузки и воспроизведения звуковых эффектов объявите в коде следующее:

Воспроизведение звука:

java
HXSound.sound()
       .load(R.raw.my_sound_effect) // Задаёт ресурс звукового эффекта. [ОБЯЗАТЕЛЬНО]
       .looped(true)                // Включает зацикливание. [ОПЦИОНАЛЬНО]
       .play(this);                 // Воспроизводит звуковой эффект. [ОБЯЗАТЕЛЬНО]

Пауза:

HXSound.pause(); // Ставит на паузу все зацикленные звуки в фоне.

Возобновление:

java
HXSound.resume();              // Возобновляет воспроизведение всех зацикленных звуков.

Предзагрузка звуков:

java
HXSound.load();                // Предварительно загружает список ресурсов в HXSound.

Включение нескольких звуковых движков:

java
HXSound.engines(2);            // Задаёт количество звуковых движков (рекомендуется 2). Только для API 9–10.

Включение/отключение звука:

HXSound.enable(true); // Включает/отключает воспроизведение звуков.

Повторная инициализация:

java
HXSound.reinitialize(this);    // Ручная повторная инициализация звуковых движков. Только для Android API 9–10.

Логирование:

HXSound.logging(true); // Включает/отключает вывод логов.

Очистка:

java
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) воспроизведение аудио.

Похожие скиллы