详细介绍声音处理
  /**
   *    作者 colico    Email:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
   *    http://blog.csdn.net/colico
   *    http://colico.ys168.com
   *   注:此为 我是小o 原创,需要转载请附上以上信息。
   *
   */

本文是在同一个游戏中移植在不同机型时所做的对声音的处理,考虑到性能的要求,对每种类型的手机做了一定的要求

s40  中的声音处理:

1)  import com.nokia.mid.sound.*;    

2)

  Sound soundPlayer;
  void initSound(){
    soundPlayer = new Sound(b_main,1);
    if(m_playSound == 1){
      soundPlayer.play(0);
    }
  }

3)  
  byte[] b_main = {
      (byte)0x02,(byte)0x4a,(byte)0x3a,(byte)0x40,
      (byte)0x04,(byte)0x01,(byte)0x1f,(byte)0x1e,
      (byte)0x54,(byte)0x88,(byte)0x38,(byte)0x84,
      (byte)0x44,(byte)0xbc,(byte)0x4a,(byte)0xc4,
      (byte)0xa0,(byte)0xa9,(byte)0x0b,(byte)0x91,
      (byte)0x27,(byte)0x22,(byte)0xa2,(byte)0xb1,
      (byte)0x31,(byte)0x13,(byte)0x88,(byte)0x00,
  };

4)
  static int m_playSound = 1;

5)  在程序中对声音的控制
              m_playSound = (byte)(1 - m_playSound);
              if(m_playSound == 1){
                try{
                  soundPlayer.play(0);
                } catch(Exception e){}
              }
              if(m_playSound == 0){
                try{
                  soundPlayer.stop();
                } catch(Exception e){}
              }


//----------------------------------------------------

使用 ott 文件  在nokia 40或 60中

1)  定义数据结构
public class EMSound
{
    public int type;
    public byte[] data;

    public EMSound(byte[] data, int type)
    {
        this.type = type;
        this.data = data;
    }
}

2)
import com.nokia.mid.ui.*;
import com.nokia.mid.sound.*;
3)
  Sound soundPlayer;
  SoundListener soundListener = new EMSoundListener();


  EMSound currentSound = null;
  boolean soundPlaying = false;
  boolean soundEnable = true;

  class EMSoundListener
      implements SoundListener {
    public void soundStateChanged(Sound sound, int event) {
      switch (event) {
        case Sound.SOUND_STOPPED:
          soundPlaying = false;
          break;
        case Sound.SOUND_PLAYING:
          soundPlaying = true;
      }
    }
  }

  public EMSound loadSound(String resfile, int resID) {
    EMSound sound;
    try {
      InputStream is = getClass().getResourceAsStream(resfile + "/" + resID +
          ".ott");
      int len = (int) is.skip(10000);
      is.close();
      is = getClass().getResourceAsStream(resfile + "/" + resID + ".ott");
      byte[] barr = new byte[len];
      is.read(barr);
      is.close();
      sound = new EMSound(barr, Sound.FORMAT_TONE);
    }
    catch (Exception ex) {
      sound = null;
    }
    return sound;
  }