2012-10-29 77 views
-1

我有16個按鈕在我的應用程序播放聲音時,我點擊他們..我想選擇和導入SD卡的聲音。有關如何做到這一點的任何建議和例子?如何導入聲音並在Android中使用它們?

這裏是我的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

你有沒有考慮使用數組,而不是大量的類似命名的'int's的?只要現在就讓你的代碼1/16,你可以節省很多時間。 –

回答

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); 
} 
相關問題