在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            在MIDP應用程序中播放聲音

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

            ■前言

            本文引用地址:http://www.biyoush.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ù)據(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

            ■音頻事件

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

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

            publicclassAudioTestimplementsAudioListener{

            /**

            *構造函數(shù)

            **/

            publicAudioTest(){

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

            audio.addAudioListener(this);//注冊audio事務監(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;

            /**

            *構造函數(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;

            /**

            *構造函數(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 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉