è probabile che preferiscono utilizzare la classe SoundPool. Riduce la latenza quando è il momento di riprodurre il suono, e offre altre sottigliezze come essere in grado di dare la priorità ai suoni quando ce ne sono troppi da giocare contemporaneamente.
Dalla documentazione:
Un Soundpool è una raccolta di campioni che possono essere caricati in memoria da una risorsa all'interno della APK o da un file nel file system. La libreria SoundPool utilizza il servizio MediaPlayer per decodificare l'audio in un flusso mono o stereo PCM a 16 bit. Ciò consente alle applicazioni di essere fornite con flussi compressi senza dover subire il carico della CPU e la latenza della decompressione durante la riproduzione.
Ad esempio:
/**
* How many sounds can be played at once.
*/
private static final int MAX_SOUND_POOL_STREAMS = 4;
/**
* Modify this as part of your own priority scheme. Higher numbers mean higher
* priority. If you don't care, it's okay to use the same priority for every
* sound.
*/
private static final int NORMAL_PRIORITY = 10;
private int mySoundId;
@Override
public void setupContent() {
this.soundPool = new SoundPool(MAX_SOUND_POOL_STREAMS,
AudioManager.STREAM_MUSIC, 100);
this.mySoundId = this.soundPool.load(this.getApplicationContext(),
R.raw.mySound, 1);
}
@Override
private void playMySound() {
this.soundPool.play(this.mySoundId, 1, 1, NORMAL_PRIORITY, 0, 1);
}
fonte
2014-02-25 04:25:43
Invia qui l'output logcat, altrimenti non è possibile riconoscere l'errore. –