Android:使用VideoView保存实例状态
我正在尝试播放sd卡中的视频,我想在任何动作发生后(如接听电话)恢复视频 那我该怎么办?? 我执行此代码,但无法保存视频的当前路径 我无法保存路径 包net.ovtraining.firsttaskAndroid:使用VideoView保存实例状态,android,Android,我正在尝试播放sd卡中的视频,我想在任何动作发生后(如接听电话)恢复视频 那我该怎么办?? 我执行此代码,但无法保存视频的当前路径 我无法保存路径 包net.ovtraining.firsttask import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.media.MediaPlayer;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.MediaController;
import android.widget.VideoView;
public class PlayVideo extends Activity {
private VideoView video_view;
private String[] fileName = {
"google1.webm", "google2.webm", "google3.webm",
"google4.webm", "google5.webm", "google6.webm"};
private List<String> paths;
private int mCurrentPosition = -1;
int mCurrentPath;
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
video_view = (VideoView) findViewById(R.id.videoView1);
String baseDir = Environment.getExternalStoragePublicDirectory("videos").getAbsolutePath()+"/";
paths = new ArrayList<String>();
for (int i = 0; i < fileName.length; i++) {
paths.add(baseDir + fileName[i]);
}
Log.i("path", baseDir);
if(savedInstanceState != null) {
mCurrentPosition = savedInstanceState.getInt(Constants.CURRENT_POSITION);
}
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(video_view);
video_view.setMediaController(mediaController);
}
@Override
protected void onStart() {
play();
video_view.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
play();
}
});
super.onStart();
}
public void play() {
if(count < paths.size()) {
video_view.stopPlayback();
video_view.setVideoPath(paths.get(count));
Log.i("TAG", paths.get(count));
video_view.requestFocus();
video_view.start();
if (mCurrentPosition != -1) {
video_view.seekTo(mCurrentPosition);
}
count++;
}
}
@Override
protected void onPause() {
mCurrentPosition = video_view.getCurrentPosition();
super.onPause();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt(Constants.CURRENT_PATH, mCurrentPath);
outState.putInt(Constants.CURRENT_POSITION, mCurrentPosition);
super.onSaveInstanceState(outState);
}
}
import java.util.ArrayList;
导入java.util.List;
导入android.app.Activity;
导入android.media.MediaPlayer;
导入android.media.MediaPlayer.OnCompletionListener;
导入android.os.Bundle;
导入android.os.Environment;
导入android.util.Log;
导入android.widget.MediaController;
导入android.widget.VideoView;
公共课播放视频扩展活动{
私人视频视图视频视图;
私有字符串[]文件名={
“谷歌1.webm”、“谷歌2.webm”、“谷歌3.webm”,
“谷歌4.webm”、“谷歌5.webm”、“谷歌6.webm”};
私有列表路径;
private int mCurrentPosition=-1;
int mCurrentPath;
私有整数计数=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
视频视图=(视频视图)findViewById(R.id.videoView1);
String baseDir=Environment.getExternalStoragePublicDirectory(“视频”).getAbsolutePath()+“/”;
路径=新的ArrayList();
对于(int i=0;i
您找到解决方案了吗?我正在调查。有人建议我使用片段
保持器来保存我的视频Uri
文件的实例,但到目前为止还无法让它工作。是的,解决方案是像这样重写Activity onRestart()方法@重写受保护的void onRestart(){count--;play();super.onRestart();}。希望这有帮助