2013-04-28 5 views
0

У меня есть этот код для Android, который играет собственный звук, он отлично работает:Воспроизведение генерируемого звука j2me

AudioTrack output = new AudioTrack(AudioManager.STREAM_MUSIC, baudRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT, bufferSize, AudioTrack.MODE_STATIC); 
output.write(myGeneratedWaveform, 0, myGeneratedWaveform.length); 
output.play(); 

Как я могу добиться того же с j2me?

Я проверяю API Manager.createPlayer (...), но не нашел пример кода.

Любая помощь будет оценена.

EDIT: У меня есть массив с кодировкой PCM. Я хочу воспроизвести это с помощью Nokia Series 40. Но я пришел к выводу, что такой поддержки не существует, просто AMR. Таким образом, библиотека с открытым исходным кодом для преобразования из PCM в AMR будет в порядке.

ответ

0

Пожалуйста, проверьте Сценарий 7 на JSR-135 Overview: Воспроизведение с носителя, хранящегося в JAR.

InputStream is = getClass().getResourceAsStream("audio.wav"); 
Player p = Manager.createPlayer(is, "audio/X-wav"); 
p.start(); 
0

Встроенный музыкальный проигрыватель J2ME способен воспроизводить любой входной поток, а не только один из медиафайлов. Я имею в виду, вы можете создать массив сырых байтов, который представляет ваши звуковые данные в определенном аудиоформате, а затем, представляя его как входной поток, воспроизводит его так, как если бы это был предварительный аудиофайл.

byte[] data; // your audio data, let us say it represents content of a proper wav-file 
Player player = Manager.createPlayer(new ByteArrayInputStream(data), "audio/x-wav"); 
player.start(); 

Это все. Кстати, вы можете просто использовать старую версию JFugue, которая может быть скомпилирована для J2ME с использованием вышеупомянутого трюка. Вы получите midi-выход, созданный из музыкальной строки, например, «Cmaj G I [Flute] C» - это может быть удобно для мидлета для обучения уха или так. Любое заинтересованное может проверить http://code.google.com/p/jfugue2me/