gpt4 book ai didi

android - 为什么 MediaPlayer 重新启动后会重置位置?

转载 作者:行者123 更新时间:2023-11-29 18:45:00 25 4
gpt4 key购买 nike

我创建一个播放视频的 Activity :

初始化MediaPlayer并自动开始播放视频

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
Surface surface = new Surface(surfaceTexture);

try {
// AssetFileDescriptor afd = getAssets().openFd(FILE_NAME);
mMediaPlayer = new MediaPlayer();
// mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mMediaPlayer.setDataSource(FILE_NAME);
mMediaPlayer.setSurface(surface);
mMediaPlayer.setLooping(true);
mMediaPlayer.prepareAsync();

// Play video when the media source is ready for playback.
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();

initializeSeekBar();
}
});

} catch (IllegalArgumentException e) {
Log.d(TAG, e.getMessage());
} catch (SecurityException e) {
Log.d(TAG, e.getMessage());
} catch (IllegalStateException e) {
Log.d(TAG, e.getMessage());
} catch (IOException e) {
Log.d(TAG, e.getMessage());
}
}

oncreate代码:

seekBar = (SeekBar) findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(mMediaPlayer != null && fromUser){
mMediaPlayer.seekTo(progress );
}
}

});
btnPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mMediaPlayer.isPlaying())
{
mMediaPlayer.pause();
btnPlay.setBackgroundResource(android.R.drawable.ic_media_play);
}
else
{

Log.d("daitran",String.valueOf(mMediaPlayer.getCurrentPosition()));
int currentpos=mMediaPlayer.getCurrentPosition();
mMediaPlayer.start();
Log.d("daitran",String.valueOf(mMediaPlayer.getCurrentPosition()));
btnPlay.setBackgroundResource(android.R.drawable.ic_media_pause);
}
}
});

更新搜索栏的值:

protected void initializeSeekBar(){
seekBar.setMax(mMediaPlayer.getDuration());
//Make sure you update Seekbar on UI thread
E045.this.runOnUiThread(new Runnable() {

@Override
public void run() {
if(mMediaPlayer != null && mMediaPlayer.isPlaying()){
Log.d("daitran",String.valueOf(mMediaPlayer.getCurrentPosition()));
int mCurrentPosition = mMediaPlayer.getCurrentPosition() ;
seekBar.setProgress(mCurrentPosition);
if(mCurrentPosition==100)
{
btnPlay.setBackgroundResource(android.R.drawable.ic_media_play);
}
}
mHandler.postDelayed(this, 1000);
}
});
}

如果我点击暂停/开始按钮,它会返回正确的位置,但是如果点击暂停->点击搜索栏改变位置->点击开始,则无法从新位置开始。

为什么MediaPlayer重新启动后会重置位置? enter image description here

再次播放后登录:

09-05 17:27:03.936 27287-27287/com.example.android.camera2video D/daitran: 12000
09-05 17:27:03.949 27287-27287/com.example.android.camera2video D/daitran: 128
09-05 17:27:04.231 27287-27287/com.example.android.camera2video D/daitran: 150
09-05 17:27:05.312 27287-27287/com.example.android.camera2video D/daitran: 1232
09-05 17:27:06.318 27287-27287/com.example.android.camera2video D/daitran: 2239
09-05 17:27:07.362 27287-27287/com.example.android.camera2video D/daitran: 3282

最佳答案

如果你想从一个特定的位置恢复你应该这样做:

Mediaplayer.seekTo(targetPosition);
Mediaplayer.start();

所以 targetPosition 是您要从那里恢复的位置

关于android - 为什么 MediaPlayer 重新启动后会重置位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52180864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com