You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<Integer, Integer> soundPoolMap;
//加载ID
public PianoMusic(Context context) {
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
//加载音效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();
}
}