我可以下载APK扩展文件,我可以使用下面的代码看到该文件
try { ZipResourcefile expansionfile = APKExpansionSupport .getAPKExpansionZipfile(this,3,0); ZipEntryRO[] zip = expansionfile.getAllEntrIEs(); Log.e("","" + zip[0].mfile.getabsolutePath()); Log.e("","" + zip[0].mfilename); Log.e("","" + zip[0].mZipfilename); Log.e("","" + zip[0].mCompressedLength); AssetfileDescriptor fd = expansionfile .getAssetfileDescriptor(zip[0].mfilename); if (fd != null && fd.getfileDescriptor() != null) { MediaPlayer mp = new MediaPlayer(); mp.setDataSource(fd.getfileDescriptor()); mp.start(); } else { Log.e("","fd or fd.getfileDescriptor() is null"); } } catch (IOException e) { e.printstacktrace(); }
我的obb有文件test.mp4和我的代码Log.e(“”,“”zip [0] .mfilename);打印test.mp4.
我的fd是null.为什么它为空?我试图解决但未能解决.
我只是无法读取obb文件中的任何文件..
没有回答Accessing to files inside obb expansion file暗示想法,但它对我不起作用.
Steps to create APK expansion file告诉来自obb的解压缩内容,然后读取它.它可靠而且好吗?
帮我!!需要最佳实践的意见.谢谢
编辑:
我的日志
03-01 10:36:40.848: E/(27836): zip[0].isUncompressed() : false03-01 10:36:40.848: E/(27836): mfile.getabsolutePath() : /storage/sdcard0/AndroID/obb/smart.trigger/main.3.smart.trigger.obb03-01 10:36:40.848: E/(27836): mfilename : test.mp403-01 10:36:40.848: E/(27836): mZipfilename : /storage/sdcard0/AndroID/obb/smart.trigger/main.3.smart.trigger.obb03-01 10:36:40.848: E/(27836): mCompressedLength : 21657598解决方法 我用谷歌搜索,发现我们必须制作.zip,其中0%(无压缩)在 http://developer.android.com/google/play/expansion-files.html中提到
提示:如果要将媒体文件打包为ZIP,则可以对具有偏移和长度控件的文件(例如MediaPlayer.setDataSource()和SoundPool.load())使用媒体播放调用,而无需解压缩ZIP.为了使其正常工作,在创建ZIP包时,不得对媒体文件执行额外压缩.例如,使用zip工具时,应使用-n选项指定不应压缩的文件后缀:
zip -n .mp4; .ogg main_expansion media_files
或者如何使用winrar制作0%压缩zip?
这里看压缩方法
mac中0%压缩zip
Create zip without compression on OS X from Terminal:zip -r0 zipfilename.zip files-to-zip
所以我们应该在Play商店上传这个zip.
所以你不需要使用ZipHelper.java
只是简单地使用
ZipResourcefile expansionfile=null; try { expansionfile = APKExpansionSupport.getAPKExpansionZipfile(getApplicationContext(),0); AssetfileDescriptor fd = expansionfile.getAssetfileDescriptor("test.mp4"); MediaPlayer mPlayer = new MediaPlayer(); mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mPlayer.setDataSource(fd.getfileDescriptor(),fd.getStartOffset(),fd.getLength()); mPlayer.prepare(); mPlayer.start(); } catch (IOException e) { // Todo auto-generated catch block e.printstacktrace(); }总结
以上是内存溢出为你收集整理的android – 从APK扩展文件中读取内容(来自obb文件)全部内容,希望文章能够帮你解决android – 从APK扩展文件中读取内容(来自obb文件)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)