如何播放来自 Content Provider 的视频

How to play a video from Content Provider

我可能一直在使用错误的搜索标签,但就是这样。 在我正在开发的应用程序中,用户可以上传图片和视频。

这通过录音或画廊。我目前正在尝试显示用户刚刚录制的视频。在 MediaStore.ACTION_VIDEO_CAPTURE.

的意图之后,我从 Intent.getData() 获取 Uri

public

 void getCameraVideo() {
        Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        if (takeVideoIntent.resolveActivity(ctx.getPackageManager()) != null) {
                ctx.startActivityForResult(takeVideoIntent, FETCHER_VIDEOCAMERA);
        } else {
            Toast.makeText(ctx, Language.translate("error_phone_has_no_camera_app"), Toast.LENGTH_LONG).show();
            ErrorClass.log("Tried to take video, but phone has no camera.");
        }
    }

所以我的视频有这个内容 Uri,现在我应该如何在 VideoView 中播放这个视频?对于这个问题,我似乎找不到任何合适的解决方案。

我只是在显示视频的 activity 中尝试了此操作,但结果是黑色 VideoView。

view = new VideoView(activity);
((VideoView) view).setVideoURI(uri);
((VideoView) view).start();

我确定有人已经解决了这个问题,我只是找不到它。

您可能需要调用 videoView.play() 来查看您的 uri 是否正确。

提供代码片段可以帮助我们找出您的问题,但请注意。

由于您在 activity 中实现了此功能,因此您应该能够从布局中访问 VideoView。因此我假设你应该能够做这样的事情......

String video_url = "some_url";
VideoView videoView = (VideoView)findViewById(R.id.video_view_id);
MediaController controls = new MediaController(YourActivityClassName.this);
videoView.setMediaController(controls);
videoView.setVideoURI(Uri.parse(video_url));
videoView.start();

希望这对您有所帮助。如果没有,请告诉我们,我们可以进一步帮助您。

P.S。查看 android 文档以获取有关 videoview 的更多信息: http://developer.android.com/reference/android/widget/VideoView.html

一次尝试如下

view.setVideoURI(Uri.parse(path));
view.requestFocus();
view.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {
         //start playing here
         mp.start();
        }
}

希望对您有所帮助。