2012-11-16 10 views
16

Voglio riprodurre un suono senza spazi vuoti in Android. Ho provato ad usare il codice mediaplayer.setLooping(true) per riprodurre il suono, ma c'è sempre una piccola pausa quando il primo suono è finito e il suono successivo inizia.Come eseguire il ciclo di un suono senza spazi vuoti in Android?

+0

Sono nuovo anche io, ma ho una domanda. Forse il tuo suono ha delle lacune? –

risposta

15

Provare a utilizzare il formato file .ogg per i file audio nella vostra applicazione. Ho avuto questo stesso problema, e dopo un sacco di ricerca, i provato il formato .ogg e loop senza spazi in Android

Informazioni sul formato ogg:. http://en.wikipedia.org/wiki/.ogg

si può facilmente convertire il file audio da .mp3 o quello che hai, per .ogg utilizzando il popolare app open source VLC Media Player.

+1

Serbatoi, funziona ... – BrantYu

+1

Anche aiutato quando si usa 'SoundPool' – weston

+6

Non ha effetto nel mio caso:/ – gkiko

1

Di solito funziona bene, a meno che non si abbia un telefono veramente lento.

Vorrei ricontrollare il file audio con un editor audio come Audacity, per verificare che non abbia alcun silenzio all'inizio o alla fine del file.

+0

basta controllare i timestamp lol –

7

questo è un bug nel sistema operativo Android :( http://code.google.com/p/android/issues/detail?id=18756

+0

per ripetere ciò che altri hanno detto, utilizzare il formato OGG e sei bravo. Ho scoperto che Audacity fa un buon lavoro nel tagliare ogni "spazio vuoto" dai file e salvarlo in .OGG. La parte migliore è che Audacity è gratuito. –

+2

Ho provato a passare a .OGG, creato con Audacity, e non ho trovato che offrisse una riproduzione senza pause per il mio campione audio da 21 secondi. –

+1

Dovrai usare Audacity per tagliare effettivamente il file audio per renderlo privo di spazio. –

3

Vale anche la pena notare che la riproduzione senza pause è stata aggiunta a Jelly Bean (livello 16 API). Ti consente di impostare un mediaplayer secondario da utilizzare per riprodurre un flusso audio successivo, a condizione che il player principale non abbia ancora finito di riprodurre l'audio corrente. Questo potrebbe essere potenzialmente utilizzato anche per creare un "loop" senza pause.

public void setNextMediaPlayer (MediaPlayer next)

Ovviamente questo non sarà di grande aiuto per la maggior parte del mercato (attualmente < 3% of the devices is running JB), ma comunque degni di nota.

Problemi correlati