通过按钮将视频从图库加载到VideoView

时间:2017-01-08 10:33:37

标签: android video android-videoview android-video-player

我正在尝试使用按钮将视频从图库加载到VideoView。 当我运行我的应用时,点击加载视频按钮,它会加载视频 仅播放该视频文件的音频。

我还在清单文件中添加了READ_EXTERNAL_STORAGE权限。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

这是我的VideoView:

<VideoView
    android:layout_width="wrap_content"
    android:layout_height="250dp"
    android:id="@+id/videoView"
    android:layout_centerVertical="true"
    android:layout_alignParentStart="true" />

请帮帮我

我的代码:

public class MainActivity extends AppCompatActivity {
    VideoView videoField;
    Button LoadVid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LoadVid = (Button)findViewById(R.id.LoadVid);
        videoField = (VideoView)findViewById(R.id.videoView);
        LoadVid.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(i, 0);
            }
        });
    }
    @Override
       protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK){
            Uri video = data.getData();
            videoField.setVideoURI(video);
            videoField.start();
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您应该将setVideoURI代码放在try catch块中,如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode == RESULT_OK){
        Uri uri = data.getData();
        try{
            videoField.setVideoURI(uri);
            videoField.start();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

它现在应该可以使用,因为我已经测试了它。