0

嘿!

我想创建一个有 3 个按钮的程序。每个按钮都会启动一个新活动(videoview),该活动会在启动时自动播放我的 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();
}

谢谢!

4

3 回答 3

1

在发送方和接收方,您的意图额外必须具有相同的密钥。
更改如下:

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

}
于 2013-04-15T02:17:33.090 回答
1

尝试调用VideoActivitystartVideoonCreate方法,然后如果您不希望视频开始自动暂停它。

此外,如果您在模拟器上进行测试,有时我会遇到 videoView 问题,但在真实设备上它总是可以正常工作。

希望能帮助到你。

于 2013-04-14T22:46:56.077 回答
1

从调试信息来看,MainActivity 中的 VideoIntent 似乎无法将视频的路径发送到 VideoActivity。我从 uriString 收到 NullPointerException 错误。我认为其中一些代码来自

视频活动

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);
}
于 2013-04-15T16:43:32.997 回答