2012-04-05 15 views
1

Ich versuche derzeit, einen einfachen Audio-Player zu schreiben, der eine URL streamt, bis der Benutzer beendet wird. Nichts wirklich Besonderes, aber ich versuche, die onInfo-Methode des MediaPlayer zu verwenden, um auf das Metadaten-Update-Flag zu warten. Ich habe den folgenden Code zum Erstellen des Media Player-Objekts.OnInfoListener wird nie ausgelöst. Überhaupt

/** 
* Creates a new media player and attempts to prepare it. 
*/ 
private void createPlayer(){ 
    Log.v(TAG, "Now in createPlayer()"); 
    if(mPlayer==null){ 
     Log.i(TAG, "No existing media player found, creating."); 
     mPlayer=new MediaPlayer(); 
     mPlayer.setOnErrorListener(this); 
     mPlayer.setOnInfoListener(new OnInfoListener() { 
      public boolean onInfo(MediaPlayer mp, int what, int extra) { 
       Log.w(TAG,"---Got some info!---"); 
       return false; 
      } 
     }); 
     mPlayer.setOnPreparedListener(this); 
     mPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
     mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    } else { 
     Log.i(TAG, "Found an existing media player. Doing nothing."); 
    } 
    try{ 
     mPlayer.setDataSource(mStreamUri); 
     mPlayer.prepareAsync(); 
     Log.i(TAG, "Just sent the media player a prepareAsync()"); 
    }catch(Exception e){ 
     Log.e(TAG,"Caught exception while trying to set up media player."); 
    } 
} 

Ich habe noch onError Feuer zu sehen, aber ich habe noch auch tatsächlich Fehler bekommen wegen der Einfachheit meiner app, aber natürlich onPrepare funktioniert gut. Ich habe versucht, es mit der Klasse, sowie eine Inline-Methode wie der obige Code zu implementieren, aber nichts passiert.

Antwort

-1

mit diesem Code ändern und versuchen Sie es erneut -

mPlayer.prepare(); 
-1

Sie nicht in onInfoListener falsch zurückgeben kann. Der Android-Entwickler sagt, wenn er false zurückgibt, scheint der infoListener so, als wäre er nicht gesetzt.

+2

Ich wünschte, das wäre wahr. Ich weiß, die Dokumentation sagt etwas, aber das ist Android. Sehen Sie sich den Quellcode an: 'if (mOnInfoListener! = Null) { mOnInfoListener.onInfo (mMediaPlayer, msg.arg1, msg.arg2); } '. Es ist egal, was du zurückbringst. Es wird nicht überprüft oder irgendwo gespeichert. – ajacian81

Verwandte Themen