Объем конкретной работы, которую вы можете выполнять с воспроизведением звука на стороне Java, довольно ограничен для Android.
Похоже, вам нужно будет смешивать звуки в какой-то момент во время их воспроизведения, чтобы они перекрывались.
Лучший способ сделать это в моей голове - использовать библиотеку C ++ под названием Oboe (я сейчас работаю с этим). Это библиотека, созданная Google для воспроизведения аудио. Теперь держись, позволь мне объяснить! Я знаю, что реализация C ++ (особенно если вы сейчас работаете только в стеке Java) может добавить немного времени вашему проекту.
Причина, по которой это пришло в голову, состоит в том, что при таком способе воспроизведения аудио (через Oboe / C ++) вы физически перемещаете отдельные биты аудиосэмпла через buffer stream
. Библиотеки C ++ также на самом деле имеют класс Mixer, в который можно поместить 2 различных аудиосэмпла (фактически до 100) для микширования, а затем в конечном итоге выполнить рендеринг через буферный поток.
Используя эту методологию, вы можете добавить определенную логику для управления началом воспроизведения звука (через 4 секунды, если рядом). В этот момент вы можете смешать первую секунду следующего клипа с текущим воспроизводимым клипом.
Теперь самое интересное, вы можете повторить этот процесс на Java! Я нашел этот пост, который может быть вам полезен:
Android: как смешать 2 аудиофайла и воспроизвести их с помощью soundPool
Теперь я предупреждаю вас, что воспроизведение аудио таким способом (через буферные потоки) является сложным процессом, и для полного понимания процесса могут потребоваться дополнительные исследования. Я не могу сказать, что знаю все функциональные возможности аудио-библиотек Java, но я готов поспорить, что они не имеют достаточной поддержки для микширования звука так, как вам нужно. Поэтому, скорее всего, вам придется смешать его самостоятельно, или в крайнем случае вы можете использовать NDK (C ++).
Надеюсь, этот ответ поможет. Наилучшие пожелания в вашем исследовании! Надеюсь, вы найдете простой способ, который работает. (Если вы это сделаете, не забудьте поделиться своими выводами по этому вопросу!)