2011-11-24 4 views
0

내 안드로이드 응용 프로그램에서 나는 Videoview에 사용하는 MediaController의 seekbar와 관련된 문제에 직면하고 있습니다.
사용자가 버퍼링 된 위치보다 큰 위치를 찾고 있는지 알고 싶습니다. 대화 상자를 표시 한 다음 검색 완료시 대화 상자를 닫아야합니다.
이 문제를 해결할 수 있는지 알려 주시기 바랍니다.Mediacontrol seekbar 문제 android

답변

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. 
    ... 
} 
0

몇 가지 방법.

옵션 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 
     } 
    };