<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    讓變化成為計劃的一部分

    歡迎大家探討本Blog涉及的所有軟件課題。我的Google Talk ID:zhengyun(at)gmail.com。

    我最希望軟件帶給用戶的感受是:美好的體驗、舒適感、簡約、干凈...

    posts - 32, comments - 8, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    [JavaME]手機同時播放兩個音樂

    探討二

    摘要:

    本文檔以及后續文檔試圖一步一步地探討如何在手機上同時播放兩個聲音文件,譬如一個是背景音樂,一個是按鍵觸發的游戲音效。請慢慢看下去,我們盡量糅合進各方匯集的一些經驗。

    1探討適合Nokia的同步播放方法

    摘要:本章 簡單描述如何在NokiaS60系列手機同時播放兩個音樂

     

    1.1. 使用nokia的專有類Sound

    Nokia UI API有一個專門播放聲音的類,它支持兩種聲音:

    l         Single notes,給定了頻率和持續時間;

    l         Simple tunes,沿用了Nokia Smart Messaging ringing tone二進制格式。

     

    我們這里說的是后者。由此Nokia UI API支持從二進制音樂數據播放曲調。這個二進制格式是Nokia’s binary Ringing Tone Programming Language(RTPL),由Nokia Smart Messaging Specification(SMART)定義。

     

    RTPL定義了兩種鈴音:

    l         Basic-song(named)

    l         Temporary-song(unnamed)

    Nokia UI API都支持。一般的下載鈴聲都是basic-song,所以在手機菜單中你會看到有名字;但是對于Nokia UI API,不使用名字,所以推薦使用Temporary-song

     

    要想使用Sound類播放二進制曲調,請導入nokiaui.zip。一般來說,它的位置在%Nokia開發包安裝目錄%\Devices\Nokia_Prototype_SDK_2_0\devices\Prototype_2_0_S60_MIDP_Emulator\lib\ext下。

    然后,代碼中

    import com.nokia.mid.sound.*;

    下面給出本次測試程序說明:

    1.2. 只是修改了背景音效播放線程的播放方式

    原本背景音效線程是調用MMAPIManager.createPlayer方式播放midi或者amr音樂的,但據說,在Nokia S60系列手機上,可以做到背景音效用Nokia專有類Sound來播放,前臺音效用wav播放,即可實現同時播放互不干擾(稱之為測試A)。我們同時也測試了背景音效用midi播放,前臺音效用Nokia專有類Sound這種情況(稱之為測試B) (此辦法在http://community.csdn.net/Expert/topic/4358/4358221.xml提及)

    所以,我們修改了TwinsMusic\src\com\ultrapower\model下的ThreadPlayBackground.java(測試A)或者ThreadPlayForeGround.java(測試B)如下所示:

    /*
         * 用nokia特有的sounds類的方式播放背景音效
         
    */

        
    private Sound m_kSound = null;
        
    private byte[] m_dataPlayBack = {
             (
    byte)0x02,(byte)0x4a,(byte)0x3a,(byte)0x40,(byte)0x04,(byte)0x00
             ,(
    byte)0x35,(byte)0x1e,(byte)0xa2,(byte)0xa8,(byte)0x2c,(byte)0xc3
             ,(
    byte)0x0c,(byte)0x30,(byte)0xc2,(byte)0xcc,(byte)0x2a,(byte)0xc2
             ,(
    byte)0x6c,(byte)0x2a,(byte)0x82,(byte)0x6c,(byte)0x22,(byte)0xc4
             ,(
    byte)0x9c,(byte)0x42,(byte)0x88,(byte)0xa1,(byte)0x26,(byte)0x90
             ,(
    byte)0x59,(byte)0x06,(byte)0x90,(byte)0xa2,(byte)0x28,(byte)0x22
             ,(
    byte)0x92,(byte)0x70,(byte)0x2b,(byte)0x02,(byte)0x64,(byte)0x00,
        }
    ;

    private synchronized void stopSounds()
        
    {
            
    if(m_kSound != null)
            
    {
                m_kSound.stop();
                m_kSound 
    = null;
            }

        }


    /*
                             * 用nokia特有的sounds類的方式播放背景音效
                             
    */

                            stopSounds();
                            m_kSound 
    = new Sound(m_dataPlayBack, Sound.FORMAT_TONE);
                            m_kSound.setGain(
    35); //設置音量
                            m_kSound.play(0);    //循環播放

    1.3. 使用說明

    由于使用到了nokia專有類,所以建議事先在Nokia S60系列模擬器中模擬運行。當然也可以像這位網友所說的:

    WTK怎么nokialib

    nokia開發工具目

    ..\Nokia\Devices\Nokia_7210_MIDP_SDK_v1_0\lib 或者

    ..\Nokia\Devices\Series_60_MIDP_Concept_SDK_Beta_0_3_Nokia_edition\lib

    中找到class.zip。打,找到Sound.class,解應該可以得到com\nokia\ui\Sound\sound.class,

    然后把整再打包成一zip文件,放到目的lib下。就行了。

    或者直接一點,把class.zip直接方到lib下也可以。

    wtk編譯打好package后,再打開你jar文件,把包含sound.class的那com文件

    除,最后再把jad中的jar-size根據實際改一下。

    ok

    反正我就是這么做的,麻煩是很麻煩。

    我按照他的方法試驗了,但是始終提示

    有一個superclass:“com\nokia\phone\sdk\concept\event\EventHandler”找不到,但是nokiaui.zip包中卻沒有這個class

     

    測試A結果:

    之后在Nokia 7610真機上測試,啟動程序之后,就立即開始播放背景音效,就是那一個

    private byte[] m_dataPlayBack =  {
             (
    byte)0x02,(byte)0x4a,(byte)0x3a,(byte)0x40,(byte)0x04,(byte)0x00
             ,(
    byte)0x35,(byte)0x1e,(byte)0xa2,(byte)0xa8,(byte)0x2c,(byte)0xc3
             ,(
    byte)0x0c,(byte)0x30,(byte)0xc2,(byte)0xcc,(byte)0x2a,(byte)0xc2
             ,(
    byte)0x6c,(byte)0x2a,(byte)0x82,(byte)0x6c,(byte)0x22,(byte)0xc4
             ,(
    byte)0x9c,(byte)0x42,(byte)0x88,(byte)0xa1,(byte)0x26,(byte)0x90
             ,(
    byte)0x59,(byte)0x06,(byte)0x90,(byte)0xa2,(byte)0x28,(byte)0x22
             ,(
    byte)0x92,(byte)0x70,(byte)0x2b,(byte)0x02,(byte)0x64,(byte)0x00,
        };

    數組啦,但是當一個按鍵按下,背景音效就會被打斷,并不再播放。與上一次試驗不同的是,按鍵所對應的音效還是被清晰播放了。

    原因還是Nokia 7610不支持混音。

     

    測試B結果:

    背景音效midi播放過程中,按鍵之后,并沒有打斷背景音,但是按鍵音也沒有播放。如果用命令停止背景音,再按鍵,那么Sound類正常播放那個數組給出的曲調。

     

    希望能找到一個支持混音的Nokia手機測試一下。

    2 資源

    網絡資源:

    1《[JavaME]手機同時播放兩個音樂 探討一

    《[JavaME]手機同時播放兩個音樂 探討

    2Nokia_UIAPI_Guide.pdf, http://www.it-c.dk/courses/JPMA/E2002/Nokia_UIAPI_Guide.pdf

    3:《CH_Using_the_Nokia_UI_API_Extension_for_Gaming_Cover_v1_0.pdf

    http://sw.nokia.com/id/b2e08592-dd77-4feb-8230-2e318217e066/CH_Using_the_Nokia_UI_API_Extension_for_Gaming_Cover_v1_0.pdf

    4:《J2ME播放聲音的幾個問題(nokia)》;

     

    鄭昀@ultrapower

    試驗品名稱

    試驗品版本

    Keyword: Mobile MMAPI Media 媒體播放 j2me 同步播放

    TwinsMusic

    0.0.1 BETA

     

    主站蜘蛛池模板: 亚洲av日韩av综合| ZZIJZZIJ亚洲日本少妇JIZJIZ| 亚洲第一AAAAA片| 国产日韩AV免费无码一区二区三区| 国产精品国产免费无码专区不卡| 亚洲一区二区成人| 99久久99这里只有免费的精品| 国产性爱在线观看亚洲黄色一级片| 日韩精品免费一线在线观看| 亚洲av无码成人精品区| 成人精品综合免费视频| 亚洲午夜未满十八勿入网站2| 国产福利免费视频| 久久亚洲国产精品| 1024免费福利永久观看网站| 亚洲a∨无码男人的天堂| 成人免费午夜视频| 特级无码毛片免费视频| 亚洲精品无码不卡在线播放HE| 中文字幕乱码免费看电影| 亚洲一二成人精品区| 国产免费AV片在线播放唯爱网| 亚洲中文字幕乱码一区| 亚洲第一黄色网址| 韩日电影在线播放免费版| 久久精品国产亚洲av日韩| 日韩高清免费观看| 搡女人免费免费视频观看| 久久综合亚洲色HEZYO社区| 在线免费观看毛片网站| 无码毛片一区二区三区视频免费播放| 久久国产成人亚洲精品影院 | 337p日本欧洲亚洲大胆人人| 亚洲av区一区二区三| 日本一道本不卡免费 | 免费一区二区三区| 亚洲精品福利你懂| 久久国产成人亚洲精品影院| 中文字幕无码播放免费| 成人a毛片免费视频观看| 亚洲熟妇无码久久精品|