| 详细介绍声音处理 /** * 作者 colico Email:colico@163.com * 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; }
|