android中使用soundpool播放音頻


 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()方法來播放聲音


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM