You can use this way:
Activity
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SoundEffectsInAndroidActivity extends Activity implements OnClickListener {
private Button button;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// init Effects class
Effects.getInstance().init(this);
button = (Button)findViewById(R.id.button1);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Effects.getInstance().playSound(Effects.SOUND_1);
}
}
Effects Class
import java.util.HashMap;
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
import android.util.Log;
import android.widget.Toast;
public class Effects {
private static final String TAG = Effects.class.toString();
private static final Effects INSTANCE = new Effects();
// Sound ID can't be 0 (zero)
public static final int SOUND_1 = 1;
private Effects() {
}
public static Effects getInstance() {
return INSTANCE;
}
private SoundPool soundPool;
private HashMap<Integer, Integer> soundPoolMap;
int priority = 1;
int no_loop = 0;
private int volume;
float normal_playback_rate = 1f;
private Context context;
public void init(Context context) {
this.context = context;
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(SOUND_1, soundPool.load(context, R.raw.sound_1, 1));
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
volume = audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM);
}
public void playSound(int soundId) {
Log.i(TAG, "!!!!!!!!!!!!!! playSound_1 !!!!!!!!!!");
soundPool.play(soundId, volume, volume, priority, no_loop, normal_playback_rate);
Toast.makeText(context, "Now you can hear sound effect!", Toast.LENGTH_LONG).show();
}
}