Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 无法使用VideoView播放资产文件夹中的视频_Android_Android Videoview_Android Video Player_Android Assets_Mediacontroller - Fatal编程技术网

Android 无法使用VideoView播放资产文件夹中的视频

Android 无法使用VideoView播放资产文件夹中的视频,android,android-videoview,android-video-player,android-assets,mediacontroller,Android,Android Videoview,Android Video Player,Android Assets,Mediacontroller,我无法使用VideoView中的MediaController播放资产文件夹中的视频。 我查看了许多堆栈溢出的答案,但都不起作用。 当我使用原始文件夹或SD卡文件夹路径时,它可以完美地工作 下面是我的代码: private void getVideoFromAssets() { try { // Start the MediaController MediaController mediacontroller = new MediaControl

我无法使用VideoView中的MediaController播放资产文件夹中的视频。 我查看了许多堆栈溢出的答案,但都不起作用。 当我使用原始文件夹或SD卡文件夹路径时,它可以完美地工作

下面是我的代码:

    private void getVideoFromAssets() {

    try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(
                VideoViewActivity.this);
        mediacontroller.setAnchorView(videoview);
        // Get the URL from String VideoURL
        Uri video = Uri.parse("file:///android_asset/test.mp4");
        videoview.setMediaController(mediacontroller);
        videoview.setVideoURI(video);


    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();

    }

    videoview.requestFocus();
    videoview.setOnPreparedListener(new OnPreparedListener() {
        // Close the progress bar and play the video
        public void onPrepared(MediaPlayer mp) {

            videoview.start();

        }
    });


}
在更改各自的路径时,此代码适用于原始卡和sd卡文件夹,但不适用于资产。 任何帮助都将不胜感激。谢谢。

请尝试:

   AssetFileDescriptor afd = getAssets().openFd(fileName);
   player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());

"file:///android_asset/...“仅适用于Web视图,您需要像这样传递Uri”content://your.authority/path.to.resource“也就是说,您需要创建自定义ContentProvider并覆盖其openAssetFile,这将使用MediaPlayer。但是我使用MediaController类。谢谢@pskink。请提供一个例子。如何扩展某个类并重写其中一个方法的例子?好的,我知道了。我会尝试让你知道输出。