Спасибо за статью, тема интересная и нужная. Не подскажите, есть ли там возможность проиграть одновременно два коротких mp3 файла в идеальной синхронизации? Чтобы звучало так, будто я взял два PCM потока и смешал их руками в один. Есть ли механизмы для этого в OpenSL ES? SoundPool, например, иногда выдает ощутимую задержку.
Насколько я знаю, для проигрывания каждого из mp3 придется создавать отдельный плеер. Их можно проиграть одновременно. Но сомневаюсь, что синхронизация при этом будет идеальной. Стоит покопать спецификацию на счет этого, сам я такой целью не задавался. Стоит учесть, что само API иногда тормозит — например, в статье я упомянул о тормозах при зацикливании плеера.
Какая-то она дико страшная в сравнении с OpenGL и OpenGL ES. И потом хоть оно и open, но нигде я не видел кроме андроида её поддержки, а openAL есть везде. В чем вообще её преимущество над openAL и зачем этот велосипед вообще создавался?
Конкретно мне было все равно, использовать OpenAL, OpenSL ES или что-то еще, т.к. опыта в этой области не было вообще. Теперь опыт есть, почему бы не поделиться?=)
И ещё один вопрос.
Можно ли при использовании OpenSL ES проигрывать аудио, которое качается из интернета?
Т.е. файл ещё полностью не скачан, а проигрывание уже началось. Такое возможно?
У нас просто слишком сложная работа со звуком реализована на OpenAL. Поэтому единственный вариант — декодировать mp3 и писать полученные данные в буфер OpenAL.
Вообще, в одном из обсуждений пишут, что можно и отсылают к докам. Но я не нашел, как это сделать.
Android NDK: OpenSL ES