Android技巧: 如何读取 apk 中的 Video

来源:互联网 发布:网上支付全美测评软件 编辑:程序博客网 时间:2024/04/30 04:15

把 video 放在  apk 包中, 可以方便程序的安装,有两种读取的方法

从包中拆解文件再读取

video 文件放在 Prj_Dir/assets 下 ( Prj_Dir/assets/myvideo.mp4)

public class VideoActivity extends Activity {    public final String TAG = "VideoActivity";    private final String VIDEO = "myvideo.mp4";    public boolean storeVideoFile() {        try {            InputStream is = getResources().getAssets().open(VIDEO);            //注意,这里用 MODE_WORLD_READABLE 是因为播放Video的是MediaPlayer进程,不是本进程            //为了让, MediaPlayer进程能读取此文件,所以设置为: MODE_WORLD_READABLE            FileOutputStream os = openFileOutput(VIDEO, MODE_WORLD_READABLE);            byte[] buffer = new byte[1024];            while (is.read(buffer) > -1) {                os.write(buffer);            }            is.close();            os.close();        } catch (Exception e) {            e.printStackTrace();            return false;        }        return true;    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (!storeVideoFile())            return;        VideoView videoView = new VideoView(this);        setContentView(videoView);        // videoView.setMediaController(new MediaController(this));        videoView.setVideoPath(getFilesDir().getAbsolutePath() + "/" + VIDEO);        videoView.setOnPreparedListener(new OnPreparedListener() {            @Override            public void onPrepared(MediaPlayer mp) {                mp.setLooping(true);            }        });        videoView.start();    }}

使用URI

这种方法,更加简洁, Video 文件放 Prj_dir/raw/ 下面

public class VideoActivity extends Activity {    public final String TAG = "VideoActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Uri uri = Uri.parse("android.resource://" + getPackageName() + "/"                + R.raw.myvideo);        VideoView videoView = new VideoView(this);        setContentView(videoView);        videoView.setVideoURI(uri);        Log.e(TAG, " uri is:" + uri);        videoView.setOnPreparedListener(new OnPreparedListener() {            @Override            public void onPrepared(MediaPlayer mp) {                mp.setLooping(true);            }        });        videoView.start();    }}