1 package com.baorant.soundpooltest; 2 3 import java.util.HashMap; 4 5 import android.app.Activity; 6 import android.media.AudioManager; 7 import android.media.SoundPool; 8 import android.os.Bundle; 9 import android.view.View; 10 import android.view.View.OnClickListener; 11 import android.widget.Button; 12 13 public class MainActivity extends Activity implements OnClickListener { 14 Button bomb, shot, arrow; 15 SoundPool soundPool; 16 HashMap<Integer, Integer> soundMap = new HashMap<Integer, Integer>(); 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_main); 22 bomb = (Button) findViewById(R.id.bomb); 23 shot = (Button) findViewById(R.id.shot); 24 arrow = (Button) findViewById(R.id.arrow); 25 /** 26 * 27 * soundPool對象的構造和sdk版本有關 28 * if(Build.VERSION.SDK_INT>=21){ 29 * SoundPool.Builder builder = new SoundPool.Builder(); 30 * builder.setMaxStreams(2);//傳入音頻數量 //AudioAttributes是一個封裝音頻各種屬性的方法 31 * AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder(); 32 * attrBuilder.setLegacyStreamType(AudioManager 33 * .STREAM_MUSIC);//設置音頻流的合適的屬性 34 * builder.setAudioAttributes(attrBuilder.build());//加載一個AudioAttributes 35 * mPool = builder.build(); }else{ mPool = new 36 * SoundPool(2,AudioManager.STREAM_MUSIC,0); } 37 */ 38 soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0); 39 soundMap.put(1, soundPool.load(this, R.raw.bomb, 1)); 40 soundMap.put(2, soundPool.load(this, R.raw.shot, 1)); 41 soundMap.put(3, soundPool.load(this, R.raw.arrow, 1)); 42 bomb.setOnClickListener(this); 43 shot.setOnClickListener(this); 44 arrow.setOnClickListener(this); 45 } 46 47 @Override 48 public void onClick(View v) { 49 switch (v.getId()) { 50 case R.id.bomb: 51 soundPool.play(soundMap.get(1), 1, 1, 0, 0, 1); 52 case R.id.shot: 53 soundPool.play(soundMap.get(2), 1, 1, 0, 0, 1); 54 case R.id.arrow: 55 soundPool.play(soundMap.get(3), 1, 1, 0, 0, 1); 56 } 57 58 } 59 60 }
使用soundpool播放聲音的步驟如下:
1、使用soundpool.builder的構造器創建sound.builder對象
2、調用soundpool的構造器創建soundpool對象,構造器方法和sdk版本有關,具體參照上面代碼內容
3、調用soundpool對象的load()方法加載聲音。最好用haspmap來管理加載的聲音
4、調用soundpool的play()方法來播放聲音