1

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

/**
 * 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は正常に機能します。クラスと上記のコードのようなインラインメソッドで実装しようとしましたが、何も起こりません。

4

2 に答える 2

-1

onInfoListenerでfalseを返すことはできません。android開発者は、falseを返すと、infoListenerは設定されていないように見えると言います。

于 2012-07-04T06:19:44.880 に答える
-1

これでコードを変更して、もう一度やり直してください -

 mPlayer.prepare();
于 2012-04-25T05:48:26.900 に答える