0

我有这个适用于 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 就可以了。

4

2 回答 2

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 GI[Flute] C”——它可能对练耳的 midlet 很方便,等等。任何有兴趣的人可以查看http://code.google.com/p/jfugue2me/

于 2013-10-28T06:40:42.173 回答
0

请查看JSR-135 概述中的场景 7 :从 JAR 中存储的媒体播放。

InputStream is = getClass().getResourceAsStream("audio.wav");
Player p = Manager.createPlayer(is, "audio/X-wav");
p.start();
于 2013-04-29T10:54:44.277 回答