2013-04-28 112 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一樣嗎?

我正在檢查Manager.createPlayer(...)的API,但沒有找到示例代碼。

任何幫助將是apreciated。

編輯: 我有一個PCM編碼波形陣列。我希望用諾基亞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 [長笛] C」 - 可能對耳朵訓練midlet很方便,等等。任何有興趣的人都可以查看http://code.google.com/p/jfugue2me/