【发布时间】:2018-09-05 08:44:36
【问题描述】:
我创建一个活动播放视频:
初始化 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);
}
});
}
如果我点击暂停/开始按钮,它会返回正确的位置, 但是如果点击暂停->点击搜索栏改变位置->点击开始,则不能从新位置开始。
再次播放后登录:
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
【问题讨论】:
-
在您的图片中,我看到您突出显示的 3 个框,其中 2 个是数字,您如何获得这些数字?
-
在我的情况下它工作正常
-
@Tay: android studio 调试,会显示出来。
-
@solanki: 我更新了 Init MediaPlayer,和你的代码一样吗?
-
你的调试代码在哪里(通常使用Log),除了异常处理程序,我没有看到任何代码
标签: android