<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 在MIDP應用程序中播放聲音

在MIDP應用程序中播放聲音

作者: 時(shí)間:2012-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏

■前言

本文引用地址:http://dyxdggzs.com/article/149129.htm

在上一講中我們講述的是如何制作JAVA手機多媒體功能中的動(dòng)畫(huà),本講中我們將介紹如何制作JAVA手機的另一個(gè)多媒體功能——,即N800的音樂(lè )功能。若是在動(dòng)畫(huà)上再配以音樂(lè )功能,就能制作出具有豐富表現力的了。

■音樂(lè )

現在我們利用播放音樂(lè )。但是,標準API不支持播放功能。機種不同,則播放方法也不同,所以每個(gè)廠(chǎng)商都會(huì )使用他們各自擴展的API。N800使用NEC擴展的API,所以能用播放聲音。

■N800的音樂(lè )播放功能

N800只能播放SMF(format0)格式的音樂(lè )數據,最大文件尺寸為10Kbyte。SMF格式即StandardMIDIFile的縮略語(yǔ),就是為了能實(shí)現互換性而設定的文件形式,互換性是指在不同的應用程序中也具有能處理數據的特性。SMF分為format0和format1兩種格式。N800所采用的是format0格式。這兩種格式具有以下不同特點(diǎn)。(表1)

360截圖20120507112828392.jpg

表1

■播放音樂(lè )

接下來(lái)我們實(shí)際操作讀取文件播放音樂(lè )的功能。

●音樂(lè )數據的讀取

利用擴展API上的Media類(lèi)的static方法讀取音樂(lè )數據。自變量中記述了音樂(lè )數據文件的通過(guò)。AudioClipaudio=Media.getAudioClip(“/test.mid”);

另外,能夠從web上獲得音樂(lè )數,并且能夠從RMS中得到音樂(lè )數據。但,由于形式相同,這里就不特別講述了。詳細情況請參考擴展API文檔。

●播放

播放讀取的音樂(lè )數據。使用AudioClip例子(在這稱(chēng)為audio)play方法播放。

audio.play();

而且也能同時(shí)播放兩個(gè)以上的音樂(lè )數據。此時(shí),使用AudioClip例子(在這稱(chēng)為audio1、audio2)play方法播放。

audio1.play();

audio2.play();

上述情況下能夠同時(shí)播放audio1,audio2。

●停止

能夠暫停音樂(lè )的播放。使用AudioClip例子的stop方法能夠停止。

audio.stop();

●其他功能

AudioClip定義了讀取其他音樂(lè )數據信息的方法和決定反復播放次數的方法。(表2)

360截圖20120507112928693.jpg

表2

■音頻事件

音頻演奏過(guò)程中,演奏開(kāi)始時(shí)、停止時(shí)、結束時(shí)都會(huì )發(fā)生音頻事件,能定義此時(shí)的處理。要定義音頻事件發(fā)生時(shí)的處理,有必要安裝AudioListener接口和記述audioAction方法內的處理。

然后,使用AudioClip對象的addAudioListener方法進(jìn)入AudioListener。

publicclassAudioTestimplementsAudioListener{

/**

*構造函數

**/

publicAudioTest(){

AudioClipaudio=Media.getAudioClip(/test.mid);//讀取音樂(lè )數據

audio.addAudioListener(this);//注冊audio事務(wù)監聽(tīng)器

}

/**

*音頻事件的處理

**/

publicvoidaudioAction(AudioClipsound,intevent,intparam){

//記述處理

}

}

ex.1

記述處理的audioAction方法的自變量如下所示。

360截圖20120507113031936.jpg

表3

此外,事件的種類(lèi)(audioAction方法的自變量、事件)在A(yíng)udioListener接口文件夾中定義如下。(表4)

360截圖20120507113207575.jpg

表4

以下展示的是只播放音頻數據的簡(jiǎn)單范例。

importjavax.microedition.lcdui.Display;

importjavax.microedition.midlet.MIDlet;

importjavax.microedition.midlet.MIDletStateChangeException;

/**

*音樂(lè )播放的簡(jiǎn)單范例

*/

publicclassAudioextendsMIDlet{

Displaydisplay;

AudioCanvascanvas;

/**

*構造函數

*/

publicAudio(){

canvas=newAudioCanvas();

display=Display.getDisplay(this);

}

protectedvoidstartApp()throwsMIDletStateChangeException{

display.setCurrent(canvas);

}

protectedvoidpauseApp(){}

protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{}

}

importjavax.microedition.lcdui.*;

importcom.nec.media.*;

/**

*音頻canvas

**/

publicclassAudioCanvas

extendsCanvas

implementsRunnable,CommandListener,AudioListener{

CommandSTART=newCommand(play,Command.OK,0);

CommandSTOP=newCommand(stop,Command.OK,0);

AudioClipa;//音樂(lè )數據

Threadth;

/**

*構造函數

**/

publicAudioCanvas(){

a=Media.getAudioClip(/_test.mid);//讀取音樂(lè )數據

a.addAudioListener(this);//注冊AudioListener

this.addCommand(START);

this.addCommand(STOP);

this.setCommandListener(this);

th=newThread(this);

th.start();

}

/**

*音頻事件的處理

*/

publicvoidaudioAction(AudioClipsound,intevent,intparam){

if(sound==a){

if(event==AudioListener.AUDIO_COMPLETE){

sound.play();

}

}


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: 聲音 播放 應用程序 MIDP

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>