Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从内容提供商播放视频_Android_Video_Android Contentprovider_Android Videoview - Fatal编程技术网

Android 如何从内容提供商播放视频

Android 如何从内容提供商播放视频,android,video,android-contentprovider,android-videoview,Android,Video,Android Contentprovider,Android Videoview,我可能使用了错误的搜索标签,但它在这里。 在我正在开发的应用程序中,用户可以上传图片和视频 这是通过录音或画廊。我目前正在尝试显示用户刚刚录制的视频。在MediaStore.ACTION\u VIDEO\u CAPTURE的意图之后,我从Intent.getData()获取Uri 公开的 void getCameraVideo() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

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

这是通过录音或画廊。我目前正在尝试显示用户刚刚录制的视频。在MediaStore.ACTION\u VIDEO\u CAPTURE的意图之后,我从Intent.getData()获取Uri

公开的

 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,现在我应该如何开始在视频视图中播放这个视频呢?对于这个问题,我似乎找不到任何像样的解决办法

我只是在我正在播放视频的活动中尝试了这一点,但它只会产生一个黑色的视频视图

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

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

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

提供一个代码片段可以帮助我们解决您的问题,但接下来就是

由于您在活动中实现了这一点,因此您应该能够从布局中访问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();
希望这能对你有所帮助。如果没有,请告诉我们,我们可以进一步帮助您

另外,请查看android文档以了解有关videoview的更多信息:

一次尝试如下

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

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

希望这能对您有所帮助。

添加更多的代码…为什么不使用开始重新编码时有意传递的相同的
uri
?我正在使用uri我得到一个结果,我没有传递任何uri。我看到您在发布解决方案后修改了问题并添加了start()方法。如果知道你在我发布我的答案后添加了这个,那会很好:)是的,但那是我忘记添加的东西。但这不是我要求反馈的问题。仅供参考,我确实声明了我从意图中获得了内容Uri,我没有链接到远程或本地视频文件的字符串。我理解视频视图没有问题,只是不知道如何正确加载视频。嗯,你从意图中检索的Uri对象中的原始数据是什么?也许这有助于缩小问题的范围。我不太确定,但就在一分钟前,我真的看了一段视频。但总的来说是黑色的。我很困惑。我会让你知道的;)VideoView没有play()方法。正如我在上面的回答中提到的,它被称为start(),这似乎是我的案例中的解决方案。可能是因为在我的例子中,视图还没有从一开始就在舞台上。是的,只要阅读VideoView文档,它就会指定以下内容:[OnPreparedListener]注册一个回调,以便在加载媒体文件并准备就绪时调用。这就解释了你之前的陈述,你说你之前看了一分钟的视频。视频一定是在某个时候加载得更快了。