I have 16 buttons in my application to play sounds when I click on them..I want to choose and import sounds from sd card. Any suggestions and examples on how to do that?
Here is my Java code :
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);
}
If you want to load from SD card, then get the path to the audio file that you want to play, and load it with
SoundPool.load(String path, int priority).Environment.getExternalStorageDirectorywill be useful for you here to help you find the files.Also as a side note, you should really learn some code reuse, your fingers will thank you. There’s no reason to have to duplicate the same behavior 16 times just to change one variable.
You could replace all those 16 functions with: