package com.example.musicwork.chuangguan; import java.util.HashMap; import android.content.Context; import android.media.AudioManager; import android.media.SoundPool; import android.util.Log; import com.example.musicwork.R; public class PianoMusic { //由于资源包含了钢琴的全部音效,特此备注:资源里与琴键的对应为: //c2 - C; c3 - c; c4 - c1(中央C); c5 - c2 int Music[] = { R.raw.c3, R.raw.d3, R.raw.e3, R.raw.f3, R.raw.g3, R.raw.a3, R.raw.b3, R.raw.c4, R.raw.d4, R.raw.e4, R.raw.f4, R.raw.g4, R.raw.a4, R.raw.b4, R.raw.c5, R.raw.d5, R.raw.e5, R.raw.f5, R.raw.g5, R.raw.a5, R.raw.b5, }; //使用soundpool播放音效 SoundPool soundPool; HashMap soundPoolMap; //加载ID public PianoMusic(Context context) { soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 100); soundPoolMap = new HashMap(); //加载音效ID到SoundPoolMap for (int i = 0; i < Music.length; i++) { soundPoolMap.put(i, soundPool.load(context, Music[i], 1)); } soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { Log.e("map", "音频池资源id为:" + sampleId + "的资源装载完成"); } }); } //播放 public void soundPlay(int no) { soundPool.play(soundPoolMap.get(no), 1,1, 1, 0, 1.0f); } //结束 public int soundOver() { return soundPool.play(soundPoolMap.get(1), 100, 100, 1, 0, 1.0f); } @Override protected void finalize() throws Throwable { soundPool.release(); super.finalize(); } }