我的应用程序中有16个按钮,当我点击它们时播放声音。我想从SD卡中选择并导入声音。关于如何做的任何建议和例子?
这是我的Java代码:
public class App extends MultiTouchActivity {
SoundPool sp;
MediaPlayer mp;
int mSoundId, mSoundId1, mSoundId2, mSoundId3, mSoundId4, mSoundId5,
mSoundId6, mSoundId7, mSoundId8, mSoundId9, mSoundId10, mSoundId11,
mSoundId12, mSoundId13, mSoundId14, mSoundId15;
int mStreamId, mStreamId1, mStreamId2, mStreamId3, mStreamId4, mStreamId5,
mStreamId6, mStreamId7, mStreamId8, mStreamId9, mStreamId10,
mStreamId11, mStreamId12, mStreamId13, mStreamId14,
mStreamId15 = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
mSoundId = sp.load(this, R.raw.dub1, 1);
mSoundId1 = sp.load(this, R.raw.dub2, 1);
mSoundId2 = sp.load(this, R.raw.dub3, 1);
mSoundId3 = sp.load(this, R.raw.dub4, 1);
mSoundId4 = sp.load(this, R.raw.dub5, 1);
mSoundId5 = sp.load(this, R.raw.dub6, 1);
mSoundId6 = sp.load(this, R.raw.dub7, 1);
mSoundId7 = sp.load(this, R.raw.dub8, 1);
mSoundId8 = sp.load(this, R.raw.dub9, 1);
mSoundId9 = sp.load(this, R.raw.dub10, 1);
mSoundId10 = sp.load(this, R.raw.dub11, 1);
mSoundId11 = sp.load(this, R.raw.dub12, 1);
mSoundId12 = sp.load(this, R.raw.dub13, 1);
mSoundId13 = sp.load(this, R.raw.dub14, 1);
mSoundId14 = sp.load(this, R.raw.dub15, 1);
mSoundId15 = sp.load(this, R.raw.dub16, 1);
}
//
public void dubstep1(View view) {
if (mStreamId != 0) {
sp.stop(mStreamId);
}
mStreamId = sp.play(mSoundId, 1, 1, 1, 0, 1f);
}
public void dubstep2(View view) {
if (mStreamId1 != 0) {
sp.stop(mStreamId1);
}
mStreamId1 = sp.play(mSoundId1, 1, 1, 1, 0, 1f);
}
public void dubstep3(View view) {
if (mStreamId2 != 0) {
sp.stop(mStreamId2);
}
mStreamId2 = sp.play(mSoundId2, 1, 1, 1, 0, 1f);
}
public void dubstep4(View view) {
if (mStreamId3 != 0) {
sp.stop(mStreamId3);
}
mStreamId3 = sp.play(mSoundId3, 1, 1, 1, 0, 1f);
}
public void dubstep5(View view) {
if (mStreamId4 != 0) {
sp.stop(mStreamId4);
}
mStreamId4 = sp.play(mSoundId4, 1, 1, 1, 0, 1f);
}
public void dubstep6(View view) {
if (mStreamId5 != 0) {
sp.stop(mStreamId5);
}
mStreamId5 = sp.play(mSoundId5, 1, 1, 1, 0, 1f);
}
public void dubstep7(View view) {
if (mStreamId6 != 0) {
sp.stop(mStreamId6);
}
mStreamId6 = sp.play(mSoundId6, 1, 1, 1, 0, 1f);
}
public void dubstep8(View view) {
if (mStreamId7 != 0) {
sp.stop(mStreamId7);
}
mStreamId7 = sp.play(mSoundId7, 1, 1, 1, 0, 1f);
}
public void dubstep9(View view) {
if (mStreamId8 != 0) {
sp.stop(mStreamId8);
}
mStreamId8 = sp.play(mSoundId8, 1, 1, 1, 0, 1f);
}
public void dubstep10(View view) {
if (mStreamId9 != 0) {
sp.stop(mStreamId9);
}
mStreamId9 = sp.play(mSoundId9, 1, 1, 1, 0, 1f);
}
public void dubstep11(View view) {
if (mStreamId10 != 0) {
sp.stop(mStreamId10);
}
mStreamId10 = sp.play(mSoundId10, 1, 1, 1, 0, 1f);
}
public void dubstep12(View view) {
if (mStreamId11 != 0) {
sp.stop(mStreamId11);
}
mStreamId11 = sp.play(mSoundId11, 1, 1, 1, 0, 1f);
}
public void dubstep13(View view) {
if (mStreamId12 != 0) {
sp.stop(mStreamId12);
}
mStreamId12 = sp.play(mSoundId12, 1, 1, 1, 0, 1f);
}
public void dubstep14(View view) {
if (mStreamId13 != 0) {
sp.stop(mStreamId13);
}
mStreamId13 = sp.play(mSoundId13, 1, 1, 1, 0, 1f);
}
public void dubstep15(View view) {
if (mStreamId14 != 0) {
sp.stop(mStreamId14);
}
mStreamId14 = sp.play(mSoundId14, 1, 1, 1, 0, 1f);
}
public void dubstep16(View view) {
if (mStreamId15 != 0) {
sp.stop(mStreamId15);
}
mStreamId15 = sp.play(mSoundId15, 1, 1, 1, 0, 1f);
}
答案 0 :(得分:1)
如果要从SD卡加载,请获取要播放的音频文件的路径,然后使用SoundPool.load(String path, int priority)
加载它。 Environment.getExternalStorageDirectory
对您有用,可以帮助您找到文件。
另外作为旁注,你应该学习一些代码重用,你的手指会感谢你。没有理由不得不重复相同的行为16次只是为了改变一个变量。
您可以用以下内容替换所有这16个函数:
int[] mStreamIds = new int[16];
int[] mSoundIds = new int[16];
public void dubstep(int id) {
if(mStreamIds[id] != 0){
sp.stop(mStreamIds[id]);
}
mStreamIds[id] = sp.play(mSoundIds[id], 1,1,1,0,1f);
}