新聞中心

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

        在MIDP應(yīng)用程序中播放聲音

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

        ■前言

        本文引用地址:http://www.104case.com/article/149129.htm

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

        ■音樂

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

        ■N800的音樂播放功能

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

        360截圖20120507112828392.jpg

        表1

        ■播放音樂

        接下來我們實際操作讀取文件播放音樂的功能。

        ●音樂數(shù)據(jù)的讀取

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

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

        ●播放

        播放讀取的音樂數(shù)據(jù)。使用AudioClip例子(在這稱為audio)play方法播放。

        audio.play();

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

        audio1.play();

        audio2.play();

        上述情況下能夠同時播放audio1,audio2。

        ●停止

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

        audio.stop();

        ●其他功能

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

        360截圖20120507112928693.jpg

        表2

        ■音頻事件

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

        然后,使用AudioClip對象的addAudioListener方法進入AudioListener。

        publicclassAudioTestimplementsAudioListener{

        /**

        *構(gòu)造函數(shù)

        **/

        publicAudioTest(){

        AudioClipaudio=Media.getAudioClip(/test.mid);//讀取音樂數(shù)據(jù)

        audio.addAudioListener(this);//注冊audio事務(wù)監(jiān)聽器

        }

        /**

        *音頻事件的處理

        **/

        publicvoidaudioAction(AudioClipsound,intevent,intparam){

        //記述處理

        }

        }

        ex.1

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

        360截圖20120507113031936.jpg

        表3

        此外,事件的種類(audioAction方法的自變量、事件)在AudioListener接口文件夾中定義如下。(表4)

        360截圖20120507113207575.jpg

        表4

        以下展示的是只播放音頻數(shù)據(jù)的簡單范例。

        importjavax.microedition.lcdui.Display;

        importjavax.microedition.midlet.MIDlet;

        importjavax.microedition.midlet.MIDletStateChangeException;

        /**

        *音樂播放的簡單范例

        */

        publicclassAudioextendsMIDlet{

        Displaydisplay;

        AudioCanvascanvas;

        /**

        *構(gòu)造函數(shù)

        */

        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;//音樂數(shù)據(jù)

        Threadth;

        /**

        *構(gòu)造函數(shù)

        **/

        publicAudioCanvas(){

        a=Media.getAudioClip(/_test.mid);//讀取音樂數(shù)據(jù)

        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();

        }

        }


        上一頁 1 2 3 4 下一頁

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

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 凤冈县| 津市市| 家居| 青冈县| 镇原县| 昭平县| 莲花县| 高州市| 调兵山市| 禄丰县| 镇宁| 山西省| 徐州市| 随州市| 武穴市| 广安市| 眉山市| 红河县| 天水市| 连山| 大荔县| 新营市| 开阳县| 宾阳县| 桦川县| 留坝县| 柘荣县| 丰台区| 嘉禾县| 太原市| 桃源县| 香港 | 乌拉特后旗| 汉源县| 周口市| 洛南县| 泰安市| 视频| 高邑县| 兴城市| 平度市|