2012-12-30 160 views
1

我有5個按鈕。每次按下按鈕時,我都想播放短暫的聲音。每個按鈕都會從我的原始文件夾播放不同的聲音。目前,我可以從第一個按鈕播放聲音,但是如何在不創建大量代碼的情況下從另一個按鈕分配聲音?請。幫幫我。如何使用soundPool按鈕單擊播放短聲音?

這裏是我到目前爲止的代碼:

public class Alphabet extends Activity { 
private Button a, b, c, d, e; 
    private SoundPool spool; 
    private int soundID; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.alphabet); 

    Button a = (Button) findViewById(R.id.a); 
    Button b = (Button) findViewById(R.id.b); 
    Button c = (Button) findViewById(R.id.c); 
    Button d = (Button) findViewById(R.id.d); 
    Button e = (Button) findViewById(R.id.e); 



    a.setOnClickListener(new OnClickListener() 
    { 
      public void onClick(View v) { 
      Sound(); 
      } 
    }); 

    b.setOnClickListener(new OnClickListener() 
    { 
      public void onClick(View v) { 
      Sound(); 
      } 
    }); 

    c.setOnClickListener(new OnClickListener() 
    { 
      public void onClick(View v) { 
      Sound(); 
      } 
    }); 

    d.setOnClickListener(new OnClickListener() 
    { 
      public void onClick(View v) { 
      Sound(); 
      } 
    }); 

    e.setOnClickListener(new OnClickListener() 
    { 
      public void onClick(View v) { 
      Sound(); 
      } 
    }); 

    this.setVolumeControlStream(AudioManager.STREAM_MUSIC); 
    spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
    soundID = spool.load(this, R.raw.a, 1); 


} 
public void Sound(){ 
    AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
    float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
    android.util.Log.v("SOUND","["+volume+"]["+spool.play(soundID, volume, volume, 1, 0, 1f)+"]"); 
}; 

}

回答

-1

例如,你可以設置參數,爲您的聲音()方法類似

Sound(int soundID){ 

     spool.load(this, soundID) 
     AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
     float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
    } 

,並把從原文件夾的聲音中你的onClick進入方法:

public void onClick(View v) { 
     Sound(R.raw.a,1); //put the sounds as parameter 
     } 
+0

在發佈之前您是否閱讀過該問題? –

+0

呃....是的,但我猜你不是。該解決方案是一個簡短的解決方案,無需編寫大量代碼這就是他想要的...... – Opiatefuchs