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