Android VideoView防止视频更改
我正在使用VideoView播放Mp4视频。屏幕上有按钮,单击事件时,我需要更改视频视图的视频并播放。我希望这次过渡尽可能顺利。这是我在ButtonOnClick处理程序中使用的代码Android VideoView防止视频更改,android,android-videoview,android-mediaplayer,Android,Android Videoview,Android Mediaplayer,我正在使用VideoView播放Mp4视频。屏幕上有按钮,单击事件时,我需要更改视频视图的视频并播放。我希望这次过渡尽可能顺利。这是我在ButtonOnClick处理程序中使用的代码 Uri uri = Uri.parse("android.resource://"+getPackageName() + "/"+R.raw.myvideo); mainVideoView.setVideoURI(uri); mainVideoView.requestFocus(); mainVideoView.s
Uri uri = Uri.parse("android.resource://"+getPackageName() + "/"+R.raw.myvideo);
mainVideoView.setVideoURI(uri);
mainVideoView.requestFocus();
mainVideoView.start();
我用Andorid 4在手机上测试这个,一切正常。但当我在安卓2.2手机上测试它时,我震惊地看到点击按钮屏幕的videoview部分会变黑一秒钟,新的视频开始播放。我无法承受应用程序中的延迟。试试这段代码
这是一个java代码
package com.android.video;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoActivity extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
VideoView videoView = (VideoView)this.findViewById(R.id.videoView);
MediaController mc = new MediaController(this);
videoView.setMediaController(mc);
//videoView.setVideoURI(Uri.parse("http://www.mediafire.com/?trc33d4yma3rkv3.mp4"));
videoView.setVideoPath("/sdcard/movie.mp4");
videoView.requestFocus();
videoView.start();
}
}
这是main.xml
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<VideoView android:id="@+id/videoView" android:layout_width="300dp" android:layout_height="300dp" />
</LinearLayout>
这是清单文件
<uses-permission android:name="android.permission.INTERNET" />
试试这段代码
这是一个java代码
package com.android.video;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoActivity extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
VideoView videoView = (VideoView)this.findViewById(R.id.videoView);
MediaController mc = new MediaController(this);
videoView.setMediaController(mc);
//videoView.setVideoURI(Uri.parse("http://www.mediafire.com/?trc33d4yma3rkv3.mp4"));
videoView.setVideoPath("/sdcard/movie.mp4");
videoView.requestFocus();
videoView.start();
}
}
这是main.xml
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<VideoView android:id="@+id/videoView" android:layout_width="300dp" android:layout_height="300dp" />
</LinearLayout>
这是清单文件
<uses-permission android:name="android.permission.INTERNET" />
恐怕你不得不接受这一点。我无法想象有任何解决办法能完全解决这个问题。哦,这是2.2版的一个bug,因为它在安卓4.0中运行良好吗?有没有其他的解决方法让用户不会注意到呢?我不建议这样做,但可以使用两个MediaPlayer(注意:不适用于VideoView)。或者你可以在两者之间放置一些东西(比如静止图像)。我不相信这是一个bug——加载一个视频需要时间。我担心你不得不接受这个事实。我无法想象有任何解决办法能完全解决这个问题。哦,这是2.2版的一个bug,因为它在安卓4.0中运行良好吗?有没有其他的解决方法让用户不会注意到呢?我不建议这样做,但可以使用两个MediaPlayer(注意:不适用于VideoView)。或者你可以在两者之间放置一些东西(比如静止图像)。我不相信这是一个bug——加载一个视频可能需要时间。