博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AssetManager中的路径参数不能包含"assets/"
阅读量:6174 次
发布时间:2019-06-21

本文共 1737 字,大约阅读时间需要 5 分钟。

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.pngoff_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);

 

转载地址:http://ylmba.baihongyu.com/

你可能感兴趣的文章
《社交网站界面设计(原书第2版)》——3.5 PIN
查看>>
HBase – 存储文件HFile结构解析
查看>>
云计算助力CDN加速
查看>>
懵逼!因周末无人值班,这家银行被黑客一行代码改变了命运
查看>>
《交互式程序设计 第2版》一2.6 对象和属性
查看>>
IDEA 15 license
查看>>
python time
查看>>
(一一〇)二维数组里找零最多的题目
查看>>
dotCloud say PostgreSQL does not scale for High Availability on the dotCloud Platform
查看>>
Tomcat shutdown无法结束进程的问题
查看>>
Android源码阅读小技巧
查看>>
基于github androidmvp代码 对mvp进行思考
查看>>
javascript设计模式小结
查看>>
ECMAScript6简介
查看>>
MyCat分库分表、读写分离
查看>>
Spring Boot使用logbak配置
查看>>
深度学习入门视频课程
查看>>
浅谈CocoaAsyncSocket
查看>>
hexo搭建个人网站博客完全教程
查看>>
真相触目惊心!个人信息泄露报告 86.5%的人曾接到推销电话
查看>>