单击按钮时启动视频 - Android

时间:2013-04-14 21:43:30

标签: java android button video android-videoview

HeJ小鼠!

我想创建一个包含3个按钮的程序。每个按钮启动一个新活动(视频视图),在启动时自动播放res / raw文件夹中的视频。下面的代码不显示任何错误,但只是不起作用,即它启动视频视图但不显示任何视频。

我的主要活动:

public class MainActivity extends Activity {

String uri;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


}

public void playsquirrelmp4(View v) {
    Intent VideoIntent = (new Intent(this, VideoActivity.class));
    VideoIntent.putExtra("android.resource://" + getPackageName() + "/"+ R.raw.squirrel, uri);
    startActivity(VideoIntent);
}

播放视频的我的VideoActivity

public class VideoActivity extends Activity {

VideoView vid;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.videoview);

    vid = (VideoView) findViewById(R.id.videoview);
    vid.setMediaController(new MediaController(this));

    Intent myIntent = getIntent();

    String uri = myIntent.getStringExtra("uri");
            Bundle b = myIntent.getExtras();

    b.getString(uri);

}

public void startVideo(String uriString) {

    Uri uri = Uri.parse(uriString);
    vid.requestFocus();
    vid.setVideoURI(uri);
    vid.start();
}

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试在VideoActivity的startVideo方法中调用onCreate,然后如果您不希望视频开始自动暂停。

此外,如果您在模拟器上进行测试,有时我遇到了与videoView有关的问题,但在实际设备上它总能正常工作。

希望它有所帮助。

答案 1 :(得分:0)

您必须在发件人和收件人方面为您的意图提供相同的密钥。
更改如下:

public void playsquirrelmp4(View v) {
    Intent VideoIntent = (new Intent(this, VideoActivity.class));
    VideoIntent.putExtra("uri", "android.resource://" + getPackageName() + "/"+ R.raw.squirrel, uri);
    startActivity(VideoIntent);
}

您的startVideo()方法未被调用,因此您不能指望视频开始 请尝试以下方法!

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.videoview);

    vid = (VideoView) findViewById(R.id.videoview);
    vid.setMediaController(new MediaController(this));

    Intent myIntent = getIntent();

    String uri = myIntent.getStringExtra("uri");
            Bundle b = myIntent.getExtras();

    startVideo( b.getString(uri) ); // call startVideo here

}

答案 2 :(得分:0)

从调试信息来看,似乎MainActivity的VideoIntent无法将视频路径发送到VideoActivity。我从uriString中得到一个NullPointerException错误。我想一些来自

的代码

VideoActivity

Intent myIntent = getIntent();
String uri = myIntent.getStringExtra("uri");
Bundle b = myIntent.getExtras();

startVideo(b.getString(uri));

无法接收来自Mainactivity的uri:

    public void playsquirrelmp4(View v) {
    Intent VideoIntent = (new Intent(this, VideoActivity.class));
    VideoIntent.putExtra("android.resource://" + getPackageName()
    + "/"+   R.raw.squirrel, uri);
    startActivity(VideoIntent);
}