视频播放完毕后启动活动

时间:2011-09-06 05:24:45

标签: android android-activity static android-intent android-videoview

在我的Android应用中,我想在我正在播放的视频结束后回到我的主要活动。我尝试了很多变通方法,但是我找不到从视频onCompletionListener调用StartActivity的方法 - 我得到的是“无法从类型Activity”错误中对非静态方法startActivity(Intent)进行静态引用。 / p>

我尝试从视频之前的Activity获取一个上下文,并将其传递给intent / startActivity。这允许应用程序编译,但后来我得到了运行时异常。

这是现在的代码,它获取“无法生成静态引用”错误 - 任何帮助都将不胜感激!

public class Videoscreen extends Activity{

public static VideoView myVideoView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.videoplay);
    myVideoView = (VideoView) findViewById(R.id.main_videoview);
    System.out.println("playing video oncreate");
    playVideo();
}
public static void playVideo(){

    // video finish listener
    myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer vmp) {
            Intent intent = new Intent();
            intent.setClass(Videoscreen.this, Game.class);
            Videoscreen.startActivity(intent);
        }
    }); 

    String low_word = SpellingView.get_low_word();
    Uri bubblesUri = Uri.parse("android.resource://org.lalloinc.ilovetrucks/raw/"+ low_word + "_vid");
    myVideoView.setVideoURI(bubblesUri);
    myVideoView.start();

}

}

2 个答案:

答案 0 :(得分:0)

如果您知道视频的时间,那么请尝试:

String uri1 = "android.resource://" + getPackageName() + "/" + R.raw.race3;
        vd.setVideoURI(Uri.parse(uri1)); 
        vd.start();

new Thread() {
             public void run() {
                     try{

                             sleep(50000);
                     } catch (Exception e) {

                     }
                   Intent intent = new Intent(Video.this, Another.class);
                   startActivity(intent);
                   finish();
             }
     }.start();

如果您不知道时间,那么您将获得时间:

int vtime = vd.getDuration();

然后在线程休眠时你只需要输入这个整数。

答案 1 :(得分:0)

如果你想从以后回到活动的视频活动,只需在视频结尾处调用finish()即可完成工作。

再次启动主Activity会创建一个不一定需要的活动堆栈。