安卓播放音效

public class MyActivity extends Activity {  
    /** Called when the activity is first created. */  
    SoundPool sp;                           //得到一個聲音池引用  
    HashMap<Integer,Integer> spMap;           //得到一個map的引用  
    Button b1;                              //聲音播放控制按鈕  
    Button b1Pause;                             //聲音暫停控制按鈕  
    Button b2;                              //聲音播放控制按鈕  
    Button b2Pause;                             //聲音暫停控制按鈕  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        initSoundPool();                        //初始化聲音池  
        b1=(Button)findViewById(R.id.Button01);//聲音播放控制按鈕實例化  
        b2=(Button)findViewById(R.id.Button02);//聲音播放控制按鈕實例化  
        b1Pause=(Button)findViewById(R.id.Button1Pause);  
        b2Pause=(Button)findViewById(R.id.Button2Pause);  
        b1.setOnClickListener(new View.OnClickListener() {//給按鈕註冊Click事件監聽  
            @Override  
            public void onClick(View v) {  
                playSound(1,1);     //播放第一首音效,循環一遍  
                Toast.makeText(MyActivity.this, "播放音效1", Toast.LENGTH_SHORT).show();  
        }});  
        b1Pause.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                sp.pause(spMap.get(1));  
                Toast.makeText(MyActivity.this, "暫停音效1", Toast.LENGTH_SHORT).show();  
        }});  
        b2.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                playSound(2,1);     //播放第二首音效,循環一遍  
            Toast.makeText(MyActivity.this, "播放音效2", Toast.LENGTH_SHORT).show();  
        }});  
        b2Pause.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                sp.pause(spMap.get(2));  
                Toast.makeText(MyActivity.this, "暫停音效2", Toast.LENGTH_SHORT).show();  
        }});  
    }  
    public void initSoundPool(){            //初始化聲音池  
        sp=new SoundPool(  
                5,              //maxStreams參數,該參數爲設置同時能夠播放多少音效  
                AudioManager.STREAM_MUSIC,  //streamType參數,該參數設置音頻類型,在遊戲中通常設置爲:STREAM_MUSIC  
                0               //srcQuality參數,該參數設置音頻文件的質量,目前還沒有效果,設置爲0爲默認值。  
        );  
        spMap=new HashMap<Integer,Integer>();  
        spMap.put(1, sp.load(this, R.raw.attack02, 1));//加載音頻文件,並將其放入map中!  
        spMap.put(2, sp.load(this, R.raw.attack14, 1));  
    }  
    public void playSound(int sound,int number){    //播放聲音,參數sound是播放音效的id,參數number是播放音效的次數  
        AudioManager am=(AudioManager)this.getSystemService(this.AUDIO_SERVICE);//實例化AudioManager對象  
        float audioMaxVolumn=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);  //返回當前AudioManager對象的最大音量值  
        float audioCurrentVolumn=am.getStreamVolume(AudioManager.STREAM_MUSIC);//返回當前AudioManager對象的音量值  
        float volumnRatio=audioCurrentVolumn/audioMaxVolumn;    //左右聲道音量;  
        sp.play(  
                spMap.get(sound),                   //播放的音樂id  
                volumnRatio,                        //左聲道音量  
                volumnRatio,                        //右聲道音量  
                1,                                  //優先級,0爲最低  
                number,                             //循環次數,0不循環,-1永遠循環  
                1                                   //回放速度 ,該值在0.5-2.0之間,1爲正常速度  
        );  
    }  
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章