Вместо предварительной записи WAV-файлов и их встраивания в приложение вы можете вместо этого сгенерировать двухканальный WAV-аудио в памяти из кода, а затем либо сохранить его как WAV-файл, который вы будете воспроизводить с помощью SoundPool, либо воспроизвести аудио.напрямую через AudioTrack (я бы порекомендовал последнее).
Сам звук представляет собой массив (обычно) 2-байтовых целых чисел.В стерео левый и правый сэмплы чередуются по всему массиву (таким образом, sample [0] - это первый L-образец, sample [1] - первый R-образец, sample [2] - второй L-образец и т. Д.).Поэтому, когда ваше приложение запускается, вы должны создать массив настолько долго, сколько вам нужно (с аудио качества CD, вашему массиву потребуется 88200 элементов на каждую секунду звука), затем заполните сэмплы вычисленными значениями для вашего тона, а затем передайте массивв AudioTrack для воспроизведения.
Или вы можете сохранить аудио в виде файла WAV и воспроизвести его с помощью SoundPool (что на самом деле может быть лучше с точки зрения объема памяти).Формат WAV очень прост в написании (чтение более сложное): просто 44-байтовый заголовок с различными свойствами, а затем сами аудиоданные.
Я думаю, что я уже отвечал на аналогичный вопрос об Android раньше,поэтому я собираюсь посмотреть, есть ли у меня какой-то базовый код для этого.
Не я, но хороший код для чтения и записи WAV-файлов в Java:
http://computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java