SoundPool — неплохое решение для проигрывателя, но присущие ему ограничения с памятью могут затруднить решение задачи. Альтернативой для одновременного воспроизведения разных звуков может быть JetPlayer. Предназначенный для игр класс JetPlayer является очень гибким инструментом для воспроизведения множества звуков и для координации их с действиями пользователя. Звуки определяются с помощью MIDI (Musical Instrument Digital Interface — цифровой интерфейс музыкальных инструментов).
Звуки JetPlayer создаются с применением специального инструмента JETCreator, который находится в каталоге инструментов Android SDK. Кроме того, для его использования понадобится установить http://proto3d.ru/order Python. Результирующий JET-файл может быть прочитан приложением, а звуки отправлены на воспроизведение. Весь процесс довольно сложен и выходит за рамки материала настоящей книги, однако в разделе “Ссылки” указано, куда обращаться за подробными сведениями.
Воспроизведение фоновых звуков с помощью класса AsyncPlayer
Если все, что требуется — это просто воспроизведение некоторой аудиозаписи, и вы не хотите занимать этим текущий поток, то AsyncPlayer может оказаться именно тем, что вы ищете. Аудиоисточник передается этому классу в виде URI, поэтому аудиофайл может быть локальным либо доступным удаленно по сети. Этот класс автоматически создает фоновый поток для обработки получения аудиоконтента и запуска воспроизведения. Поскольку он асинхронный, вы не можете знать точно, когда начнется воспроизведение. Также нельзя узнать, когда оно окончится, или даже продолжается оно либо уже завершилось. Однако можно вызвать stop, чтобы остановить воспроизведение. Вызов play снова, до завершения предыдущего воспроизведения, приводит к тому, что предыдущее воспроизведение будет немедленно остановлено, а новое будет запущено в какой-то момент времени в будущем, когда все будет настроено и вся информация будет извлечена. Это очень простой класс, который предоставляет автоматический фоновый поток. В код, реализующий сказанное.
Низкоуровневое воспроизведение аудио с использованием класса AudioTrack
До сих пор мы имели дело с аудиоконтентом из файлов — локальных или удаленных. Если вы хотите перейти на более низкий уровень — возможно, чтобы воспроизвести аудио из потока — следует изучить класс AudioTrack. Помимо обычных методов вроде play и pause, класс AudioTrack предлагает методы для передачи байтов на аудио-оборудование. Этот класс предоставляет максимум контроля над воспроизведением аудио, но в то же время он намного сложнее, чем классы, рассмотренные до сих пор . Далее в будет показан пример приложения, использующего класс AudioRecord. Класс AudioRecord очень похож на AudioTrack, так что для лучшего понимания AudioTrack заглядывайте в пример с AudioRecord.
Опубликовал Kest
February 14 2015 13:26:48 ·
0 Комментариев ·
3192 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.