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爲正常速度 ); } }
安卓播放音效
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.