播放生成的声音j2me

时间:2013-04-28 04:30:10

标签: java audio java-me playback mmapi

我有Android的这个代码,播放自定义声音,它工作正常:

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实现同样的目标?

我正在检查Manager.createPlayer(...)的API,但没有找到示例代码。

任何帮助都会被贬低。

修改 我有一个PCM编码波形的阵列。我想用诺基亚40系列重现这一点。但我得出的结论是,没有这种格式的支持,只有AMR。因此,开源的库可以从PCM转换为AMR。

2 个答案:

答案 0 :(得分:0)

请在JSR-135 Overview检查方案7:从JAR中存储的媒体播放。

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

答案 1 :(得分:0)

J2ME内置音乐播放器能够播放任何输入流,而不仅仅是从Media Store捕获的输入流。我的意思是,您可以创建原始字节数组,它以某种音频格式表示您的声音数据,然后将其表示为输入流,就像它是预先存储的音频文件一样播放。

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” - 它可能对耳朵训练midlet很方便。任何有兴趣的人都可以查看http://code.google.com/p/jfugue2me/