Estoy creando una aplicación que tendrá múltiples imágenes en la pantalla, estas imágenes serán botones y al tocar se reproducirá un sonido corto. Investigué esto y solo pude encontrar el método actual que estoy usando para reproducir sonidos, que no parece responder en absoluto. Quiero que el sonido suene rápido y responda a muchos golpes rápidos. No estaba seguro de si esto era posible en Android.¿La forma correcta de reproducir sonidos cortos es Android?
El código que estoy utilizando para jugar mi sonido es la siguiente:
Button sound1;
MediaPlayer firstSound;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
firstSound = MediaPlayer.create(SoundActivity.this, R.raw.click);
sound1 = (Button) findViewById(R.id.Sound1);
beaver.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
firstSound.start();
}
});
}
Mi problema lag también podría ser tal vez hasta la manera en que yo estoy usando el objeto reproductor multimedia? Siento que esto debería ser más suave en mi teléfono, cualquier sugerencia sobre cómo reproducir sonidos en Android es apreciada.
Gracias.
Desde el descubrimiento de sonido piscina, he editado mi código para utilizar este y funciona perfectamente, el nuevo código es el siguiente:
SoundPool soundPool;
HashMap<Integer, Integer> soundPoolMap;
int soundID = 1;
Button sound1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(soundID, soundPool.load(this, R.raw.click, 1));
sound1 = (Button) findViewById(R.id.bBeaver);
sound1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
float curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float leftVolume = curVolume/maxVolume;
float rightVolume = curVolume/maxVolume;
int priority = 1;
int no_loop = 0;
float normal_playback_rate = 1f;
soundPool.play(soundID, leftVolume, rightVolume, priority, no_loop, normal_playback_rate);
}
});
}
Gracias
Parece que no está utilizando su carpeta de sonido de sonido? – Moberg
amo la forma en que implementó, funcionó bien al mismo tiempo – desgraci
Muchas gracias. ¡Funciona genial ...! –