2010-08-28 6 views
11

J'ai un problème où parfois la méthode MediaPlayer.create renverra null, même si le fichier audio est définitivement là. En fait, si je mets l'appel à créer dans une boucle while, le lecteur multimédia sera éventuellement créé avec succès. Cela semble seulement se produire sur mon téléphone (HTC Hero fonctionnant sous 2.1) et jamais dans l'émulateur.SDK Android Mediaplayer.create retourne aléatoirement

Est-ce juste un problème avec le téléphone? Ou y a-t-il une autre façon de jouer ces fichiers audio?

Notez que je veux les charger dynamiquement, c'est-à-dire que je fais l'appel à getIndentifer. S'il y a une meilleure façon de jouer dynamiquement, faites le moi savoir.

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(); 

} 


Merci.

+0

J'ai le même problème sur le Droid X. Avez-vous été en mesure de trouver une solution? J'ai trouvé une sorte de "fix" où j'appellerais '_player.release()' avant d'appeler la méthode 'create' (' release' doit être appelé dans un try/catch si) – Darcy

+0

+1 Le même problème. Je veux jouer quelques fichiers vidéo et parfois MediaPlayer.create retourne null et je ne peux pas lire les fichiers suivants. –

Répondre

1

Un SoundPool (Docs) peut être quelque chose à considérer.

+0

Il pourrait en effet. J'ai trouvé, cependant, dans certains cas, vous pourriez trouver que SoundPool manque un peu de fonctionnalités, car il est plutôt destiné à de très petits clips, avec des cycles de vie simples. – torkildr

Questions connexes