android播放assets视频,Android 资源文件 assets 和res/raw 视频文件的引用

在Android应用中,使用VideoView播放资源文件assets和res/raw中的视频有不同的引用方式。对于res/raw中的视频,可以使用`Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.file_name)`。而在assets目录下,需要先复制文件到应用的files目录,再通过`Uri.fromFile(file)`设置VideoView的视频URI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在res/raw里时候

vv.setVideoURI(Uri.parse("android.resource://"+getPackageName() +"/"+R.raw.one));

固定的

android.resource://

包名

getPackageName()

文件名,one

在assets里的时候,不能直接用

private void initview() {

vv = (CustomVideoView) view.findViewById(R.id.videoView111);

//vv.setVideoPath("/mnt/hd/Wonder Girls - Nobody.avi");

Uri uri = copyFile("one.3gp");

vv.setVideoURI(uri);

vv.start();

}

public Uri copyFile(String name) {

try {

File dir = getActivity().getFilesDir();

File file = new File(dir, name);

if (file.exists()) {

Log.d("Test", "=========file exist=========");

return Uri.fromFile(file);

} else {

file.createNewFile();

OutputStream os = new FileOutputStream(file);

InputStream is = getActivity().getAssets().open(name);

byte[] buffer = new byte[1024];

int bufferRead = 0;

while((bufferRead = is.read(buffer)) != -1) {

os.write(buffer, 0, bufferRead);

}

os.flush();

is.close();

os.close();

Log.d("Test", "=========copyFile success=========");

return Uri.fromFile(file);

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值