Android 我从不开枪。曾经

Android 我从不开枪。曾经,android,android-mediaplayer,Android,Android Mediaplayer,我目前正在尝试编写一个简单的音频播放器,在用户退出之前流式传输URL。没有什么特别的,但是我尝试使用MediaPlayer的onInfo方法来等待元数据更新标志。我有以下创建媒体播放器对象的代码 /** * Creates a new media player and attempts to prepare it. */ private void createPlayer(){ Log.v(TAG, "Now in createPlayer()"); if(mPlayer==

我目前正在尝试编写一个简单的音频播放器,在用户退出之前流式传输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 fire,但由于我的应用程序的简单性,我还没有实际得到任何错误,但onPrepare当然可以正常工作。我尝试用类以及类似于上述代码的内联方法实现它,但没有任何效果。

用此更改代码,然后重试-

 mPlayer.prepare();

在OnInfo Listener中不能返回false。android开发人员说,如果返回false,infoListener似乎没有设置。

我希望这是真的。我知道文档里说了些什么,但这是安卓系统。查看源代码:`if(moninfo侦听器!=null){moninfo侦听器.onInfo(mmediplayer,msg.arg1,msg.arg2);}`。它不在乎你的回报。它不会检查它或将它存储在任何地方。