public void onCompletion(MediaPlayer arg0) {
          // TODO Auto-generated method stub
          MmpTool.LOG_DBG("play compeletion!");

          if (mmediaplayer != null) {

            saveProgress(0);
            if (videopl.getShuffleMode(Const.FILTER_VIDEO) == Const.SHUFFLE_ON
                || videopl.getRepeatMode(Const.FILTER_VIDEO) == Const.REPEAT_NONE) {
              if (videopl.getCurrentIndex(Const.FILTER_VIDEO)
                  >= ((videopl.getFileNum(Const.FILTER_VIDEO) - 1))) {
                try {
                  isEnd = true;
                  mmediaplayer.stop();
                  mPlayStatus = VideoConst.PLAY_STATUS_END;
                  throw new Exception("End of PlayList!!!");
                } catch (Exception e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                }
              }
            }

            try {
              autoNext();
            } catch (Exception e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }

            if (mOnPBCompleteListener != null) {
              mOnPBCompleteListener.onComplete(pb);
            }
          }
        }
  /** stop */
  public void stop() throws IllegalStateException {
    if (mmediaplayer != null) {
      try {
        isEnd = true;
        saveProgress(getProgress());
        if (mPlayStatus != VideoConst.PLAY_STATUS_STOPPED) {
          mmediaplayer.stop();
          mPlayStatus = VideoConst.PLAY_STATUS_STOPPED;
        }

        mPlayStatus = VideoConst.PLAY_STATUS_END;
      } catch (IllegalStateException e) {
        e.printStackTrace();
        sendMsg(VideoConst.MSG_INVALID_STATE);
        throw new IllegalStateException(e);
      }

      if (mOnPBCompleteListener != null) {
        mOnPBCompleteListener.onComplete(pb);
      }

      MmpTool.LOG_DBG("stop!");
    }
  }