MediaPlayer有一个getPosition方法可以取得播放的现在位置,但是如果用这个方法的话,就需要调用者一次一次去调用。有没有一个方法用类似Observer/Listener的方法来监听MediaPlayer播放位置的变化?
请各位高人指导。

解决方案 »

  1.   

    你的意思是不想客户端去轮循,而改用监听的方式。
    可惜MediaPlayer并没有提供这样的接口。
      

  2.   

    VideoView中也有进度条,一秒钟走一段,它的实现:    private Handler mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                int pos;
                switch (msg.what) {
                    case FADE_OUT:
                        hide();
                        break;
                    case SHOW_PROGRESS:
                        pos = setProgress();
                        if (!mDragging && mShowing && mPlayer.isPlaying()) {
                            msg = obtainMessage(SHOW_PROGRESS);
                            sendMessageDelayed(msg, 1000 - (pos % 1000));
                        }
                        break;
                }
            }
        };也是相当于定时器来实现的。