package com.zhiyuan3g.videosurfaceviewdemo;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.SeekBar;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private SurfaceView sfv_Show;
private MediaPlayer mMediaPlayer;
SharedPreferences sp;
private static final String PATH = Environment. getExternalStorageDirectory() + "/Movies/shipin1.mp4";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
initView();
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.SeekBar;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private SurfaceView sfv_Show;
private MediaPlayer mMediaPlayer;
SharedPreferences sp;
private static final String PATH = Environment. getExternalStorageDirectory() + "/Movies/shipin1.mp4";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
initView();
mMediaPlayer = new MediaPlayer();
//利用SharedPreferences存储视频播放的位置
sp = getSharedPreferences(
"content",
MODE_PRIVATE);
try {
// 设置多媒体类的数据源 , 可以播放音乐或者视频
mMediaPlayer.setDataSource( PATH);
// 让多媒体对象做好播放的准备
mMediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
// 获取 SurfaceView 的控制器
SurfaceHolder holder = sfv_Show.getHolder();
// 设置对 SurfaceView 的监听
holder.addCallback( new SurfaceHolder.Callback() {
@Override //SurfaceView 创建时执行
public void surfaceCreated(SurfaceHolder holder) {
try {
// 设置多媒体类的数据源 , 可以播放音乐或者视频
mMediaPlayer.setDataSource( PATH);
// 让多媒体对象做好播放的准备
mMediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
// 获取 SurfaceView 的控制器
SurfaceHolder holder = sfv_Show.getHolder();
// 设置对 SurfaceView 的监听
holder.addCallback( new SurfaceHolder.Callback() {
@Override //SurfaceView 创建时执行
public void surfaceCreated(SurfaceHolder holder) {
mMediaPlayer.setDisplay(holder);
//获得之前视频播放的位置
int position=
sp.getInt(
"content",
0);
// 让 mMediaPlayer 根据这个进度进行播放
// 让 mMediaPlayer 根据这个进度进行播放
mMediaPlayer.seekTo(position);
//
使用
MediaPlayer
开始播放视频
mMediaPlayer.start();
}
@Override //SurfaceView 改变时执行
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override //SurfaceView 销毁时执行
public void surfaceDestroyed(SurfaceHolder holder) {
// 当多媒体对象存在时 , 关闭 MediaPlayer 对象 , 释放资源的逻辑操作
if ( mMediaPlayer != null) {
// 把记录下来的当前播放的位置 , 先得到一个 sp 的编辑器 , 再根据数据存储的类型把数据存到文件里进行提交
}
@Override //SurfaceView 改变时执行
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override //SurfaceView 销毁时执行
public void surfaceDestroyed(SurfaceHolder holder) {
// 当多媒体对象存在时 , 关闭 MediaPlayer 对象 , 释放资源的逻辑操作
if ( mMediaPlayer != null) {
// 把记录下来的当前播放的位置 , 先得到一个 sp 的编辑器 , 再根据数据存储的类型把数据存到文件里进行提交
int currentPosition = mMediaPlayer.getCurrentPosition();
//将视频当前播放的位置存到content文件中
sp.edit().putInt(
"content",currentPosition).commit();
mMediaPlayer.stop(); // 关闭 MediaPlayer 对象
mMediaPlayer.release(); // 释放 MediaPlayer 资源
}
}
});
;
}
private void initView() {
sfv_Show = (SurfaceView) findViewById(R.id. sfv_Show);
}
}
mMediaPlayer.stop(); // 关闭 MediaPlayer 对象
mMediaPlayer.release(); // 释放 MediaPlayer 资源
}
}
});
;
}
private void initView() {
sfv_Show = (SurfaceView) findViewById(R.id. sfv_Show);
}
}