【问题标题】:Mediacontrol seekbar issue androidMediacontrol seekbar问题android
【发布时间】:2012-09-18 15:03:51
【问题描述】:

在我的 Android 应用程序中,我遇到了用于 Videoview 的搜索栏 MediaController 的问题。
我想知道用户是否寻找比缓冲位置更大的位置,我需要显示一个对话框,然后在寻找完成时关闭对话。
如果我能解决这个问题,请告诉我。

【问题讨论】:

    标签: android android-videoview mediacontroller


    【解决方案1】:
    mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
    
       @Override
       public void onStopTrackingTouch(SeekBar arg0) {
             // you can check for the current buffer state and where the use seek using mSeekBar.getProgress() and then open up a dialog.
    
            if(condition to match buffering and seek position)
                   openDialog();
       }
    
       @Override
       public void onStartTrackingTouch(SeekBar arg0) {
    
       }
    
       @Override
       public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {
    
       }
      });
    
    ...
    
    public void openDialog()
    {
      ...
      // check for buffer level to match your seek position
      // when it meets the codition,cancel the dialog.
      ...
    }
    

    【讨论】:

      【解决方案2】:

      有几种方法可以做到这一点。

      选项 1: 只需使用媒体播放器中的 OnInfoListener。 这将在缓冲开始和停止时向您发送信息。

      mPlayer.setOnInfoListener(OnInfo);

      然后创建您的侦听器代码。

      // info from player sent.
      OnInfoListener OnInfo = 
          new OnInfoListener() {
              public boolean onInfo(MediaPlayer mp, int what, int extra) {
                  Log.d(TAG,"media info what:"+what+" extra:"+extra);
      
                  // check about buffering status.
                  if(what==MediaPlayer.MEDIA_INFO_BUFFERING_START) {
                      // note: we are assuming _progressDialog was created already
                      _progressDialog.setMessage("Buffering...");
                      _progressDialog.show();
                  } else if(what==MediaPlayer.MEDIA_INFO_BUFFERING_END) {
                      if(_progressDialog.isShowing())
                          _progressDialog.dismiss();
                  }
                  return false;
              }
          };
      

      选项 2: 使用 OnBufferingUpdateListener 跟踪已缓冲的数量。

      mPlayer.setOnBufferingListener(OnBufferingUpdate);

      然后创建实际的监听代码。

      // buffering update
      OnBufferingUpdateListener OnBufferingUpdate =
          new OnBufferingUpdateListener() {
              @Override
              public void onBufferingUpdate(MediaPlayer mp, int percent) {
                          Log.d(TAG,"BUFFERING: "+ String.valueOf(percent));
                          // store the percent value and check it in onStopTrackingTouch() 
                          // which is in your setOnSeekBarChangeListener
              }
          };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-14
        • 1970-01-01
        相关资源
        最近更新 更多