2010-08-28 10 views
11

Ho un problema in cui occasionalmente il metodo MediaPlayer.create restituisce null, anche se il file audio è sicuramente lì. In effetti, se inserisco la chiamata per creare un ciclo while, il lettore multimediale verrà infine creato con successo. Questo sembra accadere solo sul mio telefono (HTC Hero in esecuzione 2.1) e mai nell'emulatore.Android SDK Mediaplayer.create restituisce in modo casuale null

Si tratta di un problema con il telefono? O c'è un modo diverso in cui dovrei suonare questi file audio?

Si noti che voglio caricarli dinamicamente che è ottenere che sto facendo la chiamata a getIndentifer. Se esiste un modo migliore di riprodurli dinamicamente, per favore fatemelo sapere.

public void playAudio(String audioFile){ 

    //instance variable of type MediaPlayer 
    _player = null; 
    while(_player == null){ 
     _player = MediaPlayer.create(_context, getResources().getIdentifier(audioFile, "raw", _context.getPackageName())); 
    } 
    _player.start(); 

} 


Grazie.

+0

Ho lo stesso problema sul Droid X. Sei riuscito a trovare una soluzione? Ho trovato una sorta di "correzione" in cui avrei chiamato '_player.release()' prima di chiamare il metodo 'create' (' release' deve essere chiamato all'interno di un try/catch) – Darcy

+0

+1 Lo stesso problema. Voglio riprodurre un paio di file video e talvolta MediaPlayer.create restituisce null e non riesco a riprodurre i file successivi. –

risposta

1

Un SoundPool (Docs) potrebbe essere qualcosa da considerare.

+0

Potrebbe davvero. Tuttavia, in alcuni casi ho trovato che il SoundPool è un po 'carente di funzionalità, poiché è piuttosto mirato a clip molto piccoli, con cicli di vita semplici. – torkildr

Problemi correlati