2012-04-05 4 views
1

私は現在、ユーザーが終了するまでURLをストリーミングする単純なオーディオプレーヤーを作成しようとしています。本当に素晴らしいことは何もありませんが、私はMediaPlayerのonInfoメソッドを使ってメタデータの更新フラグを待っています。メディアプレーヤーオブジェクトを作成するための次のコードがあります。OnInfoListenerは決して起動しません。 Ever

/** 
* 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."); 
    } 
} 

私はのonError火を見て、まだ持っているが、私はまた、実際に正常に動作しますonPrepareので、私のアプリを簡単にするが、もちろんのすべてのエラーを取得するには至っていません。私は、上記のコードのようなインラインメソッドと同様、クラスで実装しようとしましたが、何も起こりません。

答えて

-1
は、これであなたのコードを変更して再試行してください

-

mPlayer.prepare(); 
-1

あなたはonInfoListenerにはfalseを返すことはできません。アンドロイドの開発者は、falseを返すと、infoListenerは設定されていないかのように見えます。

+2

私はそれが本当だったらいいなあ。私はドキュメントが何かを言うことを知っているが、これはAndroidです。ソースコードを見てください: 'if(mOnInfoListener!= null){ mOnInfoListener.onInfo(mMediaPlayer、msg.arg1、msg.arg2); } '。あなたが返すものは気にしません。それをチェックしたり、どこにでも保管したりすることはありません。 – ajacian81

関連する問題