2010-08-28 5 views
11

Ich habe ein Problem, bei dem die MediaPlayer.create-Methode gelegentlich null zurückgibt, obwohl die Audiodatei definitiv vorhanden ist. In der Tat, wenn ich den Aufruf zu erstellen in eine While-Schleife, wird der Media Player schließlich erfolgreich erstellt werden. Dies scheint nur auf meinem Handy (HTC Hero läuft 2.1) und niemals im Emulator zu passieren.Android SDK Mediaplayer.create gibt nach dem Zufallsprinzip Null zurück

Ist das nur ein Problem mit dem Telefon? Oder gibt es eine andere Art, wie ich diese Audiodateien abspielen sollte?

Beachten Sie, dass ich sie dynamisch laden möchte, was ist, bekomme ich den Aufruf an getIndentifer. Wenn es eine bessere Möglichkeit gibt, diese dynamisch zu spielen, lass es mich wissen.

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

} 


Dank.

+0

Ich habe das gleiche Problem auf dem Droid X. Haben Sie eine Lösung gefunden? Ich habe eine Art "Fix" gefunden, wo ich "_player.release()" nennen würde, bevor ich die 'create' Methode aufrufen würde (' release' muss in einem try/catch aufgerufen werden) – Darcy

+0

+1 Das gleiche Problem. Ich möchte einige Videodateien abspielen und manchmal MediaPlayer.create gibt null zurück und ich kann die nächsten Dateien nicht abspielen. –

Antwort

1

Ein SoundPool (Docs) könnte etwas zu berücksichtigen sein.

+0

Es könnte tatsächlich. Ich habe jedoch festgestellt, dass SoundPool in einigen Fällen ein wenig an Funktionen fehlt, da es auf sehr kleine Clips mit einfachen Lebenszyklen ausgerichtet ist. – torkildr

Verwandte Themen