android – 从APK扩展文件中读取内容(来自obb文件)

android – 从APK扩展文件中读取内容(来自obb文件),第1张

概述我已经实现了APK扩展文件下载服务,全部来自 http://developer.android.com/google/play/expansion-files.html 我可以下载APK扩展文件,我可以使用下面的代码看到该文件 try { ZipResourceFile expansionFile = APKExpansionSupport .get 我已经实现了APK扩展文件下载服务,全部来自 http://developer.android.com/google/play/expansion-files.html

我可以下载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文件)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1123136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存