AssetManager中的路径参数不能包含"assets/
来源:互联网 发布:杰奇cms破解版 编辑:程序博客网 时间:2024/05/21 22:51
AssetManager中的路径参数不能包含"assets/"
String path = “music/bg.mp3”; //正确的参数//String path = “assets/music/bg.mp3”; //错误的参数//String path = “file:///android_asset/music/bg.mp3”; //错误的参数//String path = “/music/bg.mp3”; //错误的参数AssetFileDescriptor assetFileDescritor = mContext.getAssets().openFd(path); mediaPlayer.setDataSource(assetFileDescritor.getFileDescriptor(), assetFileDescritor.getStartOffset(), assetFileDescritor.getLength()); assetFileDescritor.close();
1. java代码中AssetManager的路径参数不能包含"assets/",
2. 但是在NDK编程中C代码里面如果采用zip方式访问assets的文件,必须包含"assets/"
//ReadAssets fileName = assets/rabbit/img/banana_skin.png
off_t readFileFromAsset(const char* fileName, char ** buffer)
{
logd("ReadAssets fileName = %s", fileNmae);
struct zip* apkArchive=zip_open(assetPath, 0, NULL);
struct zip_stat fstat;
struct zip_file* file = zip_fopen(apkArchive, fileName, 0); if (!file) { loge("Error opening %s from APK", fileName); return -1; } zip_stat(apkArchive,fileName,0,&fstat); off_t bfsize = fstat.size; *buffer=(char *)malloc(bfsize+1); memset(*buffer, 0x0, bfsize+1); int numBytesRead = zip_fread(file, *buffer,bfsize);; zip_fclose(file); return bfsize;}
上述代码中assetPath是在java层传过来的,通过调用String assetPath = context.getPackageResourcePath(),传递到c++层调用
const char* assetPath = env->GetStringUTFChars(jassetPath, false);
env->ReleaseStringUTFChars(jassetPath, assetPath);
得到。
3. 在C++层使用AAssetManager也是一样必须以"assets/"开头。
AAsset* asset = AAssetManager_open(assetMgr, realPath, AASSET_MODE_UNKNOWN); off_t bufferSize = AAsset_getLength(asset); char* buffer=(char*)malloc(bufferSize+1); memset(buffer, 0, bufferSize); buffer[bufferSize]=0; int numBytesRead = AAsset_read(asset, buffer, bufferSize); AAsset_close(asset);
0 0
- AssetManager中的路径参数不能包含"assets/
- AssetManager assets文件夹
- android资源的热更新(替换 AssetManager+LoadedApk中的资源路径)
- 路径中不能包含的字符
- QT编辑时不能包含中文路径
- AssetManager
- AssetManager
- AssetManager
- 【AssetManager】
- AssetManager
- <AssetManager>
- Android ndk下用AssetManager读取assets的资源
- AssetManager.openFd(String fileName)读取assets下文件报错解决方案
- AssetManager (资源路径+当前手机配置信息)
- studio中的assets存放路径,加载HTML文件
- studio中的assets存放路径,加载HTML文件
- 不能包含boost库中的.hpp文件
- java中的路径包含空格问题
- android多分辨率适配
- C/C++复习:不等长字符串的排序(1)
- C语言中+的优先级大于>>
- 中英文中 面试的区别
- IOCTL函数用法
- AssetManager中的路径参数不能包含"assets/
- Android 编程下 Touch 事件的分发和消费机制
- Linux里如何查找文件内容
- 梯度检验与高级优化
- Java 枚举类
- 按钮按下时有波纹动效 —— vision1.0
- Linux内核分析学习总结
- 数字签名原理剖析
- 数据库框架ormlimt简单使用