MediaPlayer getProgess - 不正确的值
问题描述:
我使用MediaPlayer
播放一些录制的音频和SeekBar
来显示播放的进度。我的问题是:当我在SeekBar
点击跳转至下面的例子发生在一个时间位置,我看到在登录时,我希望看到的陆侃:MediaPlayer getProgess - 不正确的值
getprogress(毫秒):10000个
getprogress( MS):9956
getprogress(毫秒):10000
所以我跳到录制的音频的第10秒。 MediaPlayer
跳转到第10秒,但在它跳回一点之后,您可以看到。
我尽我所能。我尝试播放其他录音机的音频文件,但发生相同的情况。尝试播放比特率和采样率,但发生相同。
我希望有人知道这个解决方案。谢谢。
编辑:
代码:
搜索栏:
progressBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(receiver);
// handler2.removeCallbacks(updateTimeTask);
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (PlayerForegroundService.player != null) {
// handler2.removeCallbacks(updateTimeTask);
PlayerForegroundService.player.seekTo(seekBar.getProgress());
// handler2.post(updateTimeTask);
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(receiver, new IntentFilter(Constants.ACTION.PLAYER_UPDATE_UI));
}
}
});
}
getProgess():
public int getProgress(){
if (player != null) {
Log.i(Constants.DEFAULTS.LOG_TAG, ""+player.getCurrentPosition());
return player.getCurrentPosition();
}
else
return 0;
}
时getProgress被调用的代码:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, final Intent intent) {
actPosition.setText(intent.getStringExtra("formattedtimeplay"));
progressBar.setProgress(PlayerForegroundService.player.getProgress());
if (intent.getBooleanExtra("pausedplay", false))
playButton.setImageResource(R.drawable.playfilled);
}
};
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(receiver, new IntentFilter(Constants.ACTION.PLAYER_UPDATE_UI));
super.onCreate(savedInstanceState);
}
答
看来我解决了这个问题。之前,我曾经以秒为单位设置了SeekBar
的最大值。但是,在设置毫秒的最大值和以毫秒为单位的seekTo
的值后,它可以正常工作。
请发布您的代码。 –
你在哪里记录这个进度?我想要得到一个确切的值,你应该检查onSeekCompleteListener onSeekComplete()... – Opiatefuchs
哪里是你的'MediaPlayer.OnSeekCompleteListener'? – pskink