视频进度条 暂停 横竖屏切换
package com.example.day1112;
import android.content.pm.ActivityInfo;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import androidx.appcompat.app.AppCompatActivity;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, View.OnClickListener {
private SurfaceView surface_id;
private SurfaceHolder surfaceHolder;
private String url = "http://vodkgeyttp8.vod.126.net/cloudmusic/OCFgJDQgIDAxNiAgNSE5IA==/mv/503273/468104880119c923975a4a40e93aa238.mp4?wsSecret=54823b58965d4b6d4b2cb5212c6e1e3e&wsTime=1573541268";
private MediaPlayer mediaPlayer = new MediaPlayer();
private SeekBar seekbar;
private Button button_pause;
private boolean isplay = true;
private Handler handler = new Handler();
private Button button_all;
private boolean isvertical = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initPlayer();
}
private void initView() {
surface_id = (SurfaceView) findViewById(R.id.surface_id);
surfaceHolder = surface_id.getHolder();
surfaceHolder.addCallback(this);
seekbar = (SeekBar) findViewById(R.id.seekbar);
seekbar.setOnClickListener(this);
button_pause = (Button) findViewById(R.id.button_pause);
button_pause.setOnClickListener(this);
button_all = (Button) findViewById(R.id.button_all);
button_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isvertical){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
isvertical = false;
}else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
isvertical = true;
}
}
});
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
mediaPlayer.seekTo(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
private void initPlayer() {
if (mediaPlayer != null) {
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
initTimer();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (mediaPlayer != null) {
mediaPlayer.setDisplay(holder);
button_pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isplay) {
button_pause.setText("播放");
mediaPlayer.pause();
isplay = false;
} else {
button_pause.setText("暂停");
mediaPlayer.start();
isplay = true;
}
}
});
}
}
Timer timer;
private void initTimer() {
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
final int position = mediaPlayer.getCurrentPosition();
handler.post(new Runnable() {
@Override
public void run() {
seekbar.setMax(mediaPlayer.getDuration());
seekbar.setProgress(position);
}
});
}
}, 0, 1000);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
if (timer != null) {
timer.cancel();
}
}
@Override
public void onClick(View v) {
}
}