播放音频原生api 提供了几种方式,今天主要讲解SoundPool
import androidx.appcompat.app.AppCompatActivity;
import android.media.SoundPool;
import android.os.Bundle;
import android.util.SparseIntArray;
import android.view.View;
import com.thomas.android.base.R;
import java.io.IOException;
/**
* I use SparseIntArray instead of Map,it will better than map
*
*/
public class AudioActivity extends AppCompatActivity {
private SoundPool soundPool;
private SparseIntArray soundId = new SparseIntArray();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_audio);
initSoundPool();
}
private void initSoundPool() {
// 设置最多可容纳5个音频流,音频的品质为5
// deprecated as of API 21:
//soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC,5);
soundPool = new SoundPool.Builder().build();
soundId.put(1, soundPool.load(this, R.raw.duang, 1));
try {
// get source from asset file
soundId.put(2 ,soundPool.load(getAssets().openFd("music_one.mp3") , 1)); //需要捕获IO异常
} catch (IOException e) {
e.printStackTrace();
}
soundId.put(3, soundPool.load(this, R.raw.duang, 1));
soundId.put(4, soundPool.load(this, R.raw.duang, 1));
soundId.put(5, soundPool.load(this, R.raw.duang, 1));
}
public void playAudioClick(View view) {
// play what you like
soundPool.play(soundId.get(2), 1, 1, 0, 0, 1);
for (int i = 0; i < soundId.size(); i++) {
int key = soundId.keyAt(i);
System.out.println("key=" + key + ", value=" + soundId.get(key));
}
}
}