Android VideoView防止视频更改

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

我正在使用VideoView播放Mp4视频。屏幕上有按钮,单击事件时,我需要更改视频视图的视频并播放。我希望这次过渡尽可能顺利。这是我在ButtonOnClick处理程序中使用的代码

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——加载一个视频可能需要时间。