如何从Android的资产文件夹的子文件夹播放视频 [英] how to play video from sub folder of assets folder in android

查看:382
本文介绍了如何从Android的资产文件夹的子文件夹播放视频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想打从资产中文件夹的子文件夹中的视频。

I am trying to play video from sub-folder's of Assets folder.

我的资产文件夹中创建一个文件夹XYZ。

I have created one folder xyz in assets folder.

这是我的code:

String uriPath = "android.resource://"+ getPackageName() + "/assets/xyz/"+"age.mp4";
    videoView.setVideoURI(Uri.parse(uri));
    // videoView.setMediaController(new MediaController(this));
    videoView.setMediaController(null);
    videoView.requestFocus();
    videoView.start();

但它给我的错误 E / MediaPlayer的(11068):错误(1,-2147483648)

也试过这code:

public void Play(String fileName) {
        AssetFileDescriptor descriptor = null;
        try {

            String[] array = getApplicationContext().getAssets().list("long_a");
            Toast.makeText(MainActivity.this,
                    "file is exists  " + array.length, Toast.LENGTH_LONG)
                    .show();

            descriptor = getApplicationContext().getAssets().openFd(
                    "xyz/say.mp4");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        long start = descriptor.getStartOffset();
        long end = descriptor.getLength();
        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setDataSource(descriptor.getFileDescriptor(), start,
                    end);
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            mediaPlayer.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mediaPlayer.start();
    }

感谢您提前帮助:)

推荐答案

替换此:

字符串uriPath =android.resource://+ getPackageName()+/资产/ XYZ /+age.mp4;

String uriPath = "android.resource://"+ getPackageName() + "/assets/xyz/"+"age.mp4";

本:

AssetFileDescriptor AFD = getAssets()openFd(XYZ / age.mp4)。
   player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

AssetFileDescriptor afd = getAssets().openFd("xyz/age.mp4"); player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

,并确保您从布局获得视频查看的ID,如:

VideoView videoView =(VideoView)findViewById(R.id.videoView1);

VideoView videoView =(VideoView)findViewById(R.id.videoView1);

像创建的MediaController:

的MediaController的MediaController =新的MediaController(本);结果
    mediaController.setAnchorView(videoView);

MediaController mediaController= new MediaController(this);
mediaController.setAnchorView(videoView);

设置的MediaController这样的:

videoView.setMediaController(的MediaController);

videoView.setMediaController(mediaController);

这篇关于如何从Android的资产文件夹的子文件夹播放视频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆